使用Ruby Booleans,如果没有相等的语句,你要检查什么?

时间:2016-11-07 23:07:51

标签: ruby

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

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

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

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

我想知道你究竟在考虑什么没有等于运算符(==)或赋值运算符(=)?必须有一些平等的检查,或许隐藏在Ruby的简单性质中,因为我在逻辑上思考这个问题,并且"如果x"," If Restaurant.method& #34;如果没有某种检查,两者都没有任何意义。

2 个答案:

答案 0 :(得分:5)

这是编程中的常见范例,而不是Ruby抽象。你正在检查是否有什么东西是真的。特别是在红宝石中,除了falsenil之外,一切都很简洁。如果您想测试一下,请在您的控制台中自行尝试:

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

......等,而

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

重要说明:这只是Ruby的情况。其他语言有不同的规则。例如,在某些语言中0是假的。在学习新语言的早期学习这些知识非常重要。

答案 1 :(得分:1)

Ruby有" truthy"声明。这意味着多件事可以评估为真。 Ruby中的所有内容都是正确的,除了nil和false。