hüner gerekiyorsa Proc
için bu tartışmayı dönüştürmek için Ruby söyleyen bir &
kullanarak ve:
Ayrıca onlar yol yakalamak ve yönteme kendisi içeride blok parametresi erişmek istiyorum aynalar sonra nesneyi yöntem bloğu olarak kullanın. Ruby 1.9'dan başlayarak, lambda (anonim) işlevler için bir kısayol vardır. Yani, böyle bir kod yazabilirsiniz:
(1..5).map &->(x){ x*x }
# => [1, 4, 9, 16, 25]
gücünü
dizinin her öğesi alıp hesaplamak olacak bu kod aynıdır: Ruby 1.8 için
func = ->(x) { x*x }
(1..5).map &func
:
(1..5).map &lambda {|x| x*x}
# => [1, 4, 9, 16, 25]
(sen Dizisinin yöntemini reduce
kullanabilirsinizsorununuzu çözmek için
('A'..'K').reduce(0) { |sum,elem| sum + elem.size }
# => 11
reduce
için bir lambda fonksiyonu geçen biraz zor olmakla birlikte, anonim blok hemen hemen lambda olarak aynıdır: 8.923.210 başlangıç değeri).
('A'..'K').reduce(0) { |sum, elem| ->(sum){ sum + 1}.call(sum) }
# => 11
Yoksa sadece bu gibi harfleri Concat olabilir: Geçen önüne bir ve işareti koyarak bir yöntem tanım bağlamında
('A'..'K').map &->(a){ a.downcase }
=> ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"]
:
('A'..'K').reduce(:+)
=> "ABCDEFGHIJK"
dönüştürme küçük harfe parametresi, bir yöntemin bir blok alabildiğini ve yöntem gövdesi içinde bu bloğa başvurmak için bize bir ad verebileceğini belirtir.