可在Ruby 样式指南中找到。
1 > 2 ? true : false; puts 'Hi'
我假设这总是返回Hi
,但我该如何阅读它?
如果 1 > 2 则为真,否则为假。
但是,它将打印hi
任何条件结果。
相同的是:
if 1 > 2 then
true
else
false
end
puts 'hi'
您可能会像这样阅读
1 > 2 ? true : false # first line of code
puts "Hi" #second line of code
1 > 2 ? 真假; 放“嗨”这意味着
if 1 > 2
return true
else
return false
end
puts "Hi"
这里每次都意味着结果是打印“hi”的结果,因为我们在条件之外打印“Hi”。
但
if 1 > 2
puts "1 is not greater than 2"
else
puts "1 is greater than 2"
end
你也可以在你的控制台中测试
1.9.3p125 :002 > if 1 > 2
1.9.3p125 :003?> puts "1 is not greater than 2"
1.9.3p125 :004?> else
1.9.3p125 :005 > puts "1 is greater than 2"
1.9.3p125 :006?> end
1 is greater than 2
=> nil
分号是分隔两行代码的内联方式。所以就像
1 > 2 ? true : false
puts "Hi"
这相当于
false
puts "Hi"
当然,只说一行false
什么都不做(除了少数情况,比如如果它是函数定义的最后一行,在这种情况下,如果到达该行,该方法将返回 false)。
Ruby 编译器是这样读取的:
1.>( 2 )
puts "Hi"
三元运算符 ? : 是多余的。比较“大于”符号 :> 实际上是 Numeric 类的一种方法。
如果 1 大于 2 则为真,否则为假。然后放嗨