理解可选括号的困难
问题描述:
我在理解下面的代码片段中的执行过程中遇到问题。理解可选括号的困难
x = 5
puts (0..10).include?(x) ? "yes" : "no"
它给出所需的输出是yes
。但是,当我忽略include?
方法的括号内是这样的:
x = 5
puts (0..10).include? x ? "yes" : "no"
输出为false
。 我正在使用ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
答
这是因为在第二种情况下,ruby将整个x ? "yes" : "no"
expresion的结果作为参数。
puts (0..10).include? x ? "yes" : "no"
等同于:
puts (0..10).include?(x ? "yes" : "no")
的Ruby允许省略方法调用括号,但也有情况下,当它不可能忽略他们写你自己的预期。
答
认为它是这样的...
puts (0..10).include? x ? "yes" : "no"
是一样的...
puts ((0..10).include? (x ? "yes" : "no"))
这是一样的...
puts ((0..10).include? ("yes"))
这是相同...
puts (false) #=> false
+0
雅!我明白了@Micher指出!不管怎么说,还是要谢谢你 –
你让我的一天! –