我一直在使用 if yield self[x] 来评估块是返回 true 还是 false。
我需要将该块设为 optional ,并且我看到了执行 yield if block_given? 的建议。
我怎样才能把这两行结合起来?

最佳答案

你试过这个吗?

if block_given? && yield(self[x])
  # ...
end

当没有给出块时,此条件将始终失败,即不会评估代替 # ... 的任何内容。如果您希望条件在没有给出块的情况下成功,请改为执行以下操作:
if !block_given? || yield(self[x])
  # ...
end

或者这个,虽然我认为它更难阅读:
unless block_given? && !yield(self[x])
  # ...
end

关于ruby - 有没有更好的方法从 Ruby 中的块中获取值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26516207/

10-13 23:59