【发布时间】:2020-10-28 22:45:30
【问题描述】:
正如 cmets 所述,问题实际上就是答案。
如果方法得到一个块,我想进一步使用它。但我也有一个不需要该块的变体。我可以以任何方式做到这一点吗?
例如:
def maybe_gets_block(&blk)
if blk
STDERR.puts "Yay! I’ve got a block!"
@callback = blk
else
STDERR.puts "I don’t have a block"
@callback = nil
end
end
【问题讨论】:
-
您在此处显示的方法应该可以正常工作。如果你将一个块传递给
maybe_gets_block,它将被转换为一个 Proc 并分配给@callback。如果你没有通过一个块,nil将被分配。有什么不适用于此解决方案吗? -
@HolgerJust 谢谢!是的,这是对的。我不知道为什么我认为它不起作用——我几乎可以肯定自从我上次尝试升级 Ruby 以来我还没有升级。那我要不要删掉这个问题?还是留给其他困惑的人?
-
@Bohdan:我会保留这个问题。这个例子写得很好,cmets和答案很有启发性。
标签: ruby optional-parameters ruby-block