【发布时间】:2016-07-30 04:45:33
【问题描述】:
我有一个需要一个块的函数。这个块也需要一个块:
def fn
yield do n
puts n
end
end
fn do
yield 1
end
此代码应打印“1”。然而,它实际上做的是失败:
语法错误,意外的keyword_do
我可以让函数取一个 proc:
def fn(&block)
block.() do n
puts n
end
end
但是在这种情况下,代码在 yield 行失败:
没有给出块(yield)(LocalJumpError)
我不想让内部块成为 proc:
fn do |&block|
block.(1)
end
因为它看起来很糟糕。我宁愿让步,至少在内部块中。我该如何解决这个问题?
【问题讨论】:
-
Lambdas 和 procs 看起来并不可怕。这种名声是不应该的。
-
我不会称之为污染。这不是你的问题。您通过在本网站上发布放弃了所有权利,它会自动成为知识共享。您不能声明所有权。