0
(1..5).each do|x| puts yield(x) end do |x| return x*2 end
在我的頭上這將循環1〜5調用的第一個塊將產生於第二塊,並把2,4,6,8,10
紅寶石傳遞塊塊
爲什麼這不工作,什麼是寫這個最簡單的方法。
(1..5).each do|x| puts yield(x) end do |x| return x*2 end
在我的頭上這將循環1〜5調用的第一個塊將產生於第二塊,並把2,4,6,8,10
紅寶石傳遞塊塊
爲什麼這不工作,什麼是寫這個最簡單的方法。
yield
在方法內工作。來自「Programming Ruby」的引用:
在該方法中,可以使用yield語句調用該塊,就好像它是一個 方法本身一樣。
所以,如果你想使這段代碼工作,你可以把它改成這樣的:
def f(n)
(1..n).each do |x|
puts yield(x)
end
end
f(5) do |x|
x * 2
end
如果你不想定義方法,你應該把塊放入變量和然後使用它:
b = Proc.new{|x| x *2 }
(1..5).each do |x|
puts b.call(x)
end
最簡單的方法來寫這個:
(1..5).each { |x| puts x*2 }