我对传递 block 有一个小问题。
def a_method(a, b)
a + yield(a, b)
end
这个很好用。
k = a_method(1, 2) do |x, y|
(x + y) * 3
end
puts k
但这样做是行不通的。
puts a_method(1, 2) do |x, y|
(x + y) * 3
end
# LocalJumpError: no block given (yield)
有人能够友好地向我解释这个吗?
谢谢。这个例子摘自Paolo Perrotta的《Ruby元编程》。非常好的书。
each
的代码块使用括号可以工作,但使用do
-end
不行(ruby),块定义 - 大括号和do
-end
之间的区别?,Ruby多行块没有do
end
,使用do
块与括号{}
,这些块编码风格在Ruby中有什么区别或价值?,... - Jörg W Mittagdo
/end
和{}
不总是等价的?以及Ruby块中的奇怪缺陷。 - Jörg W Mittag