トリックが必要な場合にProc
にこの引数を変換するために、Rubyのを伝え&
を使用しており、オブジェクトをメソッドのブロックとして使用します。 Ruby 1.9以降、ラムダ(匿名)関数のショートカットがあります。だから、あなたはこのようなコードを書くことができます。
(1..5).map &->(x){ x*x }
# => [1, 4, 9, 16, 25]
は、配列の各要素を取得し、その力を計算します
を、このコードと同じです:ルビー1.8用
func = ->(x) { x*x }
(1..5).map &func
:あなたは配列のメソッドを使用することができますあなたの問題を解決するために
(1..5).map &lambda {|x| x*x}
# => [1, 4, 9, 16, 25]
reduce
(0
)が初期値である:
('A'..'K').reduce(0) { |sum,elem| sum + elem.size }
# => 11
reduce
にラムダ関数を渡すは少しトリッキーですが、無名ブロックはかなりラムダと同じです。
('A'..'K').reduce(0) { |sum, elem| ->(sum){ sum + 1}.call(sum) }
# => 11
それとも、ただ、このように文字をCONCAT可能性:最後の前にアンパサンドを入れて、メソッド定義の文脈では
('A'..'K').map &->(a){ a.downcase }
=> ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"]
:小文字に
('A'..'K').reduce(:+)
=> "ABCDEFGHIJK"
変換パラメータはメソッドがブロックを取ることを示し、メソッド本体内のこのブロックを参照する名前を与えます。