【发布时间】:2015-10-24 15:59:12
【问题描述】:
我用块调用方法;
method do
"Hello"
end
方法定义为;
def method
yield
end
以及在定义方法时;我想检查给定的块是否为空(nil),因为方法中的变量可能会像这样结束;
method do
""
end
所以在定义上,我想检查 yield 块是否为零。喜欢;
def method
if yield ? yield : "Empty block? Seriously?"
end
我知道上述方法不起作用。但这正是我想要实现的目标。
还请记住,block_given? 将始终为“true”,因为即使它是 nil 或 空字符串,也会给出块.
更新:由于大多数 cmets/answers 表明问题不清楚;这是@ndn简化的问题:
我想检查执行块的结果是否为“空”(nil 或“”) 首先调用它。
【问题讨论】:
-
如果我理解正确,你想知道块返回的值是
nil还是"",然后再屈服。这不可能。如果不是这种情况,您可以将yield的结果分配给一个变量,然后让nil?和empty?对其进行检查。 -
是的,你是对的。
-
是的,如果我像@WandMaker's answer中那样分配它,如果没有给出块,它会给出错误。所以你说在让步之前没有办法知道块内容是 nil 还是 "" 。是关于这个主题的来源或讨论等,以便我了解更多吗?谢谢。
-
好吧,让我写一个答案……