BW放(“odin”)和放“odin”有什么不同?
上下文
puts "odin" || true给出的结果与puts("odin") || true不同
puts "odin" || true
puts("odin") || true
xoefb8l81#
Ruby将puts "odin" || true理解为puts("odin" || true),它将始终输出odin。它不会计算|| true部分,因为"odin"已经为真。该行将返回nil,因为这是puts方法的缺省返回值。puts("odin") || true也将输出odin,但将返回true,因为puts("odin")的返回值是nil,因此将计算|| true并返回true。
puts("odin" || true)
odin
|| true
"odin"
nil
puts
true
puts("odin")
fsi0uk1n2#
不同之处在于评估的优先级:
"odin" || true
nil || true
afdcj2ne3#
在拼音中,大括号是可选的,或者更好地说:在某些情况下,空格的作用类似于大括号。您得到两个不同结果的原因是大括号的解释位置不同,因此以下两个语句打印“odin”并返回nil:
puts "odin" || true puts("odin" || true)
记住,这里的字符串在Ruby中是真实的,这意味着我们实际上在Puts方法中有一个条件,即true || false #=> true对于第二个示例,条件不再作为参数传递给Puts方法。PUTRESERSNIL,为FALSE。
true || false #=> true
puts("odin") || true #=> true
这意味着总回报为nil || true #=> true
nil || true #=> true
3条答案
按热度按时间xoefb8l81#
Ruby将
puts "odin" || true
理解为puts("odin" || true)
,它将始终输出odin
。它不会计算|| true
部分,因为"odin"
已经为真。该行将返回nil
,因为这是puts
方法的缺省返回值。puts("odin") || true
也将输出odin
,但将返回true
,因为puts("odin")
的返回值是nil
,因此将计算|| true
并返回true
。fsi0uk1n2#
不同之处在于评估的优先级:
"odin" || true
的计算结果为true
,然后用作puts
(返回nil
)的参数;puts("odin")
返回nil
,然后在nil || true
语句中求值为true
;afdcj2ne3#
在拼音中,大括号是可选的,或者更好地说:在某些情况下,空格的作用类似于大括号。
您得到两个不同结果的原因是大括号的解释位置不同,因此以下两个语句打印“odin”并返回nil:
记住,这里的字符串在Ruby中是真实的,这意味着我们实际上在Puts方法中有一个条件,即
true || false #=> true
对于第二个示例,条件不再作为参数传递给Puts方法。PUTRESERSNIL,为FALSE。
这意味着总回报为
nil || true #=> true