ruby - 有没有更好的方法从 Ruby 中的 block 中获取值?

标签 ruby block option-type

我一直在使用 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/

相关文章:

ruby - 你如何测试使用 rspec fork 的代码

java - Kotlin 中的方法的返回类型应该是什么,该方法的值可以为 null 并且将从 Java 调用?

html - 'display: block; float: left' 与 'display: inline-block; float: left' 之间的区别?

java - 套接字超时不起作用,InputStream 读取 block

ios - Swift if let 在 Optional(nil) 上评估成功

java - 有没有更清晰的方法来处理短暂的选项?

ruby-on-rails - 如何使用 STI 向派生类添加列?

ruby - Ruby "||" "or"有问题吗?

ruby-on-rails - 在 postgresql 应用程序的 rails 中运行迁移后的序列通知

element - FOP : unwanted linebreaks in nested <fo:block> elements