配列に入った要素のメソッド順番に実行してselectの良い方法をyuku_tに教えてもらった。
&:method でオブジェクトのメソッドを指定できる
["a","b","c"].map(&:to_sym) #=> [:a, :b, :c]
これは次のコードと同じ。
["a","b","c"].map{|e| e.to_sym }
仕組み、each にブロックとして実行できるProcを渡せる。
Emumerable#each( &block )
オブジェクトのメソッドはシンボルで指定できる。
Object.method(:object_id)
以下の様なショートカットが出来るようになっている。
["a","b","c"].map(&:bytes).map(&:to_a) #~> => [[97], [98], [99]]
クラスにメソッドがあるときのselectが便利
class User def active? # do something end end users = [ takuya, kohei, akira ] active_users = users.select( &:active? )
などやることで、結構省略できる便利機能でした。
教えてもらった。嬉しい
@takuya_1st あと array.select(&:method?) とやれば method? が真になる要素だけになるのも便利です。map(&:method) もよく使います :)
— └|∵|┐ (@yuku_t) January 14, 2014