有人可以解释这行ruby代码的作用吗?
在Ruby风格指南中找到。
1 > 2 ? true : false; puts 'Hi'
我假设这总是返回Hi
,但我该怎么读呢?
如果1> 2则为true,否则为false。
但是,无论条件结果如何,它都会打印出来。
它是一样的:
if 1 > 2 then true else false end puts 'hi'
你可能会读到这个
1 > 2 ? true : false # first line of code puts "Hi" #second line of code
Ruby编译器读取它如下:
1.>( 2 ) puts "Hi"
三元运算符? :多余。 比较’大于’符号:>实际上是一个数字类的方法。
如果1大于2则为true,否则为false。 然后放嗨
分号是分隔两行代码的内联方式。 所以它就像
1 > 2 ? true : false puts "Hi"
这相当于
false puts "Hi"
当然,只是说false
的行不会做任何事情(除了少数情况,如果它是函数定义的最后一行,在这种情况下,如果方法到达该行,则返回false)。
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