我正在使用教程,它有这样的条件:
if Restaurant.method1
puts "XXX"
elsif Restaurant.method2
puts "YYY"
end
两种方法都返回布尔值true
或false
。同样,对于变量,我看到过类似的东西:
if x
puts "XXX"
else
puts "YYY"
end
我想知道你究竟在考虑什么没有等于运算符(==
)或赋值运算符(=
)?必须有一些平等的检查,或许隐藏在Ruby的简单性质中,因为我在逻辑上思考这个问题,并且"如果x"," If Restaurant.method& #34;如果没有某种检查,两者都没有任何意义。
答案 0 :(得分:5)
这是编程中的常见范例,而不是Ruby抽象。你正在检查是否有什么东西是真的。特别是在红宝石中,除了false
和nil
之外,一切都很简洁。如果您想测试一下,请在您的控制台中自行尝试:
!!1 # => true
!!0 # => true
!![] # => true
!!{} # => true
......等,而
!!false # => false
!!nil # => false
重要说明:这只是Ruby的情况。其他语言有不同的规则。例如,在某些语言中0
是假的。在学习新语言的早期学习这些知识非常重要。
答案 1 :(得分:1)
Ruby有" truthy"声明。这意味着多件事可以评估为真。 Ruby中的所有内容都是正确的,除了nil和false。