有人可以解释这行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。 然后放嗨

http://buddylindsey.com/c-vs-ruby-if-then-else/

分号是分隔两行代码的内联方式。 所以它就像

 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