クロージャって何よ?
クロージャ(クロージャー、closure、閉包)はプログラミング言語における関数の一種。引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決することを特徴とする。関数とそれを評価する環境のペアであるともいえる。この概念は少なくとも1960年代のSECDマシンまで遡ることができる。(Wikipedia - クロージャ)
本には、「手続きをオブジェクト化し、メソッドの引数として受け渡しが出きるようにする仕組み」とあります。
聞いたことないなーと思って調べてみたら僕の知ってる言語にはありませんでした。仕方ないので勉強ですよ。
クロージャの理解にはブロックについて知っておく必要があるらしく最初はブロックから。
ブロックとは、{} とか do endで囲まれた部分のこと。
ブロックを使って(使わなくても)書く繰り返しのことをイテレータという。
イテレータはよくある繰り返し処理(ArrayとかStringに対してよく使う)が一行で書ける。すごい便利。引数にブロックを指定する。
each:各要素にブロック内の処理をする
select:ある条件を満たす要素の配列を返す
reject:selectの逆
collect:新しい要素の配列を返す
find:条件に一致する要素を取得
sort:ソートする