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 }