1.6
その他の機能
11
yield
はブロックの実行結果を返します。
>>
def number_names
[yield('one'), yield('two'), yield('three')].join(', ')
end
=> nil
>>
number_names { |name| name.upcase.reverse }
=> "ENO, OWT, EERHT"
1.6.7
Enumerable
Rubyには
Enumerable
という組み込みモジュールがあり、これは
Array
、
Hash
、
Range
といっ
た値のコレクションを表現するクラスにインクルードされています。
Enumerable
はコレクションの
走査、検索、ソートに役立つメソッドを提供し、そのメソッドの多くはブロックとともに呼び出される
ことを期待しています。ブロック内のコードは、メソッドがやる仕事の一部として、コレクションの値
の一部もしくは全部に対して実行されます。以下に例を挙げます。
>>
(1..10).count { |number| number.even? }
=> 5
>>
(1..10).select { |number| number.even? }
=> [2, 4, 6, 8, 10]
>>
(1..10).any? { |number| number < 8 }
=> true
>>
(1..10).all? { |number| number < 8 }
=> false
>>
(1..5).each do |number| ...