我一直在使用 if yield self[x]
来评估一个 block 是返回 true 还是 false。
我需要使 block 成为可选的,并且我看到了执行 yield if block_given?
的建议。
我怎样才能将这两行结合起来?
最佳答案
你试过吗?
if block_given? && yield(self[x])
# ...
end
当没有给出任何 block 时,此条件将始终失败,即 # ...
中的任何内容都不会被评估。如果您希望条件在没有给出 block 的情况下成功,请改为执行以下操作:
if !block_given? || yield(self[x])
# ...
end
或者这个,虽然我认为它更难阅读:
unless block_given? && !yield(self[x])
# ...
end
关于ruby - 有没有更好的方法从 Ruby 中的 block 中获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26516207/