ブロック構文を使う頻度の高いメソッドを使用例と一緒にまとめます。
map(エイリアスメソッドはcollect)
各要素に対してブロックを評価した結果を新しい配列にして返す
空の配列を用意して、他の配列をループ処理した結果を空の配列に詰め込んでいくような処理の
大半はmapメソッドに置き換えられる。
コンソール
irb(main):026:0> numbers
=> [1, 2, 3, 4, 5]
irb(main):027:0> new_numbers = numbers.map {|n| n * 10}
irb(main):028:0> new_numbers
=> [10, 20, 30, 40, 50]
irb(main):029:0> numbers
=> [1, 2, 3, 4, 5]
select/find_all/reject
selectメソッドは各要素に対してブロックを評価し、その戻り値が真の要素を集めた配列を返すメソッドです。
コンソール
irb(main):003:0> numbers = [1,2,3,4,5,6]
irb(main):004:0> even_numbers = numbers.select {|n| n.even?}
rb(main):006:0> even_numbers
=> [2, 4, 6]
rejectメソッドはselectメソッドの反対で、ブロックの戻り値が真になった要素を除外した配列を返す
コンソール
irb(main):007:0> numbers = [1,2,3,4,5,6]
irb(main):008:0> non_multiples_of_three = numbers.reject {|n| n % 3 == 0}
irb(main):010:0> non_multiples_of_three
=> [1, 2, 4, 5]
&とシンボルを使って簡潔に書く
コンソール
irb(main):012:0> ['ruby', 'java', 'perl'].map(&:upcase)
=> ["RUBY", "JAVA", "PERL"]
参考文献
「プロを目指す人のためのRuby入門」