ruby - 对于 Ruby bool 值,如果没有相等语句,您要检查什么?

标签 ruby

我正在使用一个教程,它有一个这样的条件:

if Restaurant.method1
   puts "XXX"
elsif Restaurant.method2
   puts "YYY"
end

这两种方法都返回 bool 值 truefalse。同样,对于变量,我也看到过类似的东西:

if x
  puts "XXX"
else 
  puts "YYY"
end

我想知道考虑到没有相等运算符 (==) 或赋值运算符 (=),您到底在检查什么?一定有某种可能被 Ruby 的简单性所隐藏的相等性检查,因为我在我的脑海中逻辑地思考这个,“If x”和“If Restaurant.method”都没有任何意义,因为没有某种检查的条件。

最佳答案

这是编程中的通用范例,而不是 Ruby 抽象。您正在检查某事是否真实。特别是在 ruby​​ 中,除了 falsenil 之外,一切都是真实的。如果您想对此进行测试,请在您的控制台中自行尝试:

!!1 # => true
!!0 # => true
!![] # => true
!!{} # => true

...等等,而

!!false # => false
!!nil # => false

重要说明:这仅适用于 Ruby。其他语言有不同的规则。例如,在某些语言中 0 是假的。在学习一门新语言时尽早学习这些内容很重要。

关于ruby - 对于 Ruby bool 值,如果没有相等语句,您要检查什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40476323/

相关文章:

ruby-on-rails - RoR 脚手架错误, 'undefined method to_datetime for 0:Fixnum'

ruby-on-rails - web.1 | bundler : command not found: puma

ruby-on-rails - Heroku asset_sync gem 没有上传到 s3

ruby - 没有 key 的散列在 Ruby 中意味着什么?

ruby - 如何使用 Mechanize/Nokogiri 获取页面源

ruby-on-rails - 为什么我的 haml 页面在源代码 View 中损坏?

ruby-on-rails - Rails 应用程序 View 中的 NoMethodError

ruby - Ruby 中用于具有重复元素的集合的交集和并集

ruby - 为什么我不能在每个循环中合并哈希

ruby-on-rails - 我如何在 rake 任务中强制使用 RAILS_ENV?