8 Ruby core metod o kterých jsem ani nevěděl

Pavel Hronek
UOL Devs
Published in
2 min readMar 23, 2017

Poslední dobou jsem si často říkal že by bylo dobré si zase trochu projít základy Ruby a tak sem se rozhodl nahlédnout do dokumentace a podívat se co je nového, jiného a tak podobně.

Výsledkem je tento malý seznam věcí které jsem buď skoro nikdy nepoužil a tak jsem na ně zapomněl a nebo jsem vůbec netušil že existují. Snad v tomto seznamu objeví i někdo další něco nového co neznal jako jsem objevil já.

initialize_clone a initialize_copy

Nedávno sem hledal způsob jak udělat kopii objektu ale zároveň nezkopírovat některé atributy. Toto je přesně způsob jak to provést. V tříde objektu který chceme kopírovat nadefinujeme metodu initialize_copy a v ní provedeme požadovanou logiku.

Array#rindex

Metoda která která je podobná metodě #index ale vrací poslední index dané hodnoty. Například pokud máme v poli některou hodnotu vícekrát tak metoda #rindex vrací index posledního výskytu.

Array#rotate

Metoda, která už podle názvu napovídá, rotuje elementy v poli. Argument count určuje kolikátý prvek bude přesunut na první pozici v poli.

Method#curry

Metoda #curry se dá použít k tazvanému curryingu. V podstatě jde o to že pokud máme metodu která vyžaduje například 2 parametry ale my chceme nejdříve předat jen první a až později druhý, můžeme na metodě zavolat metodu #curry. Ta nám vrátí Proc kterému můžeme postupně předávat jednotlivé parametry. Teprve až předáme oba parametry tak se nám zpátky vrátí návratová hodnota samotné metody.

Range#cover?

Tato metoda jak už název napovídá vrací true nebo false podle toho jestli daný Range objekt pokrývá argument.

String#center

Jednoduchá metoda která vycentruje string pomocí padstringu. Jako argumenty přijímá width vycentrování a padstring který je implicitně whitespace. Použitelné například ve výstupech u konzolových aplikací a podobných.

String#squeeze

Metoda která, když je zavolaná bez parametrů, nahrazuje znaky které jsou několikrát po sobě jedním znakem. Dalo by se například použít při načítání dat z externích zdrojů kde může být spousta whitespace a jedním zavoláním #squeeze se ho dá snadno zbavit. Nebo pokud chceme můžeme poslat například jenom ' ' jako parametr a #squeeze se provede jen nad whitespace.

To je tedy všechno

Přišlo mi docela zajímavé se takhle podívat do Core knihovny Ruby a najít pár věcí které člověk stále nezná. Rozhodně si nemyslím že by měl člověk znát všechno nazpaměť ale hodí se občas si připomenout co všechno má k dispozici.

Snad se i někdo další v tomto listu naučil něco nového jako já a možná příště se zkusím podívat po podobných metodách například v knihovnách Ruby, v ActiveSupport a nebo přímo v samotných Rails.

--

--