ruby - 使用 && ("and") 就像在 ruby 中一样?

标签 ruby

从一些个人实验中,我发现 ruby​​ "and"/"&&"的行为似乎类似于 if 语句。

  condition && action

似乎和

做的一样
  if condition
    action
  end

这些是等价的吗?

最佳答案

因为&&短路了

a && b。如果 a 的计算结果为 false,则无论 b 是什么,表达式都是 false,因此为避免浪费时间,b 不会被计算。 b 仅在 a 计算结果为真时才需要计算。

||(“或”)也有类似的短路行为。你能算出它是什么吗?

[编辑]

正如 Holger 刚刚指出的那样,when I say a "true" value in Ruby, I mean any truthy value, and when I mention a "false" value in Ruby, I mean any falsey value .也就是说,truefalse 不是 Ruby 中唯一的真值和假值。事实上,Ruby 中除了 nilfalse 之外的每个值都是真值,只有这两个异常(exception)是假值。请注意,字符串 "false" 和数字 0 不是这两个异常之一,因此它们实际上是真实的。

我们现在可以完整地描述a && b的行为:

  • 如果 a 的计算结果为假值,则 a && b 返回 a 的值,同时 b 未评估。
  • 如果 a 的计算结果为真值,则 a && b 返回 b 的值,结果 ab 正在评估。

关于ruby - 使用 && ("and") 就像在 ruby 中一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45970492/

相关文章:

ruby-on-rails - Heroku|Ruby 参数错误 : Missing required arguments:

ruby - 正常方法中的 "self"与单例方法中的 "self"?

ruby-on-rails - 当我创建新用户时设计 current_user 返回 nil,Rails 3.2

jQuery 获取针对 Sinatra 的请求未获取文本

ruby - 使用 Mechanize 读取本地 HTML 文件

ruby - Nokogiri 替换 HTML 的 strip 内容

Ruby 1.9.3 多线程实现比单威胁实现花费更长的时间,为什么?

ruby-on-rails - 运行从另一个目录安装的 rubocop

ruby - 带线程的 Rspec

ruby-on-rails - 无法安装 ruby gem 约翰逊