【发布时间】:2017-09-09 12:16:45
【问题描述】:
我明白了
def a(&block)
block.call(self)
end
和
def a()
yield self
end
如果我假设有这样一个块a {},会导致相同的结果。我的问题是 - 因为我偶然发现了一些类似的代码,它是否有任何区别或者是否有任何优势(如果我不使用变量/引用块):
def a(&block)
yield self
end
这是一个具体的案例,我不明白&block的用法:
def rule(code, name, &block)
@rules = [] if @rules.nil?
@rules << Rule.new(code, name)
yield self
end
【问题讨论】:
-
Block Argument 的文档显示了不同的用例。
-
@Stefan 我添加了一个我不明白 &block 用法的具体案例,也许我错过了一些东西,所以你可以看看吗?除此之外,我还阅读了文档,它符合我的理解。
-
如果您不打算明确使用它,请不要将其添加到列表中。它使调用变慢并且令人困惑。
-
@ndn “这很令人困惑” - 特别是对于初学者。我认为这导致了这个问题。 ;)