我一直在使用if yield self[x]
来评估一个块是返回true还是false。
我需要使块可选,我看到了yield if block_given?
的建议。
我怎样才能将这两行结合起来?
答案 0 :(得分:7)
你试过这个吗?
if block_given? && yield(self[x])
# ...
end
当没有给出阻止时,这种情况总是会失败,即无法代替# ...
进行评估。如果您希望条件成功,如果没有给出阻止,请改为:
if !block_given? || yield(self[x])
# ...
end
或者这个,虽然我认为它更难阅读:
unless block_given? && !yield(self[x])
# ...
end
答案 1 :(得分:3)
尝试:
if block_given?
if yield self[x]
# Do something....
end
end
答案 2 :(得分:0)
您可以将条件附加到整个if
块:
if yield self[x]
# do something...
end if block_given?