带花括号()和不带花括号的BW PUT的区别

kmpatx3s  于 2022-10-15  发布在  Ruby
关注(0)|答案(3)|浏览(290)

BW放(“odin”)和放“odin”有什么不同?

上下文

puts "odin" || true给出的结果与puts("odin") || true不同

xoefb8l8

xoefb8l81#

Ruby将puts "odin" || true理解为puts("odin" || true),它将始终输出odin。它不会计算|| true部分,因为"odin"已经为真。该行将返回nil,因为这是puts方法的缺省返回值。
puts("odin") || true也将输出odin,但将返回true,因为puts("odin")的返回值是nil,因此将计算|| true并返回true

fsi0uk1n

fsi0uk1n2#

不同之处在于评估的优先级:

  • 在第一个示例中,"odin" || true的计算结果为true,然后用作puts(返回nil)的参数;
  • 在第二个示例中,puts("odin")返回nil,然后在nil || true语句中求值为true
afdcj2ne

afdcj2ne3#

在拼音中,大括号是可选的,或者更好地说:在某些情况下,空格的作用类似于大括号。
您得到两个不同结果的原因是大括号的解释位置不同,因此以下两个语句打印“odin”并返回nil

puts "odin" || true  
puts("odin" || true)

记住,这里的字符串在Ruby中是真实的,这意味着我们实际上在Puts方法中有一个条件,即true || false #=> true
对于第二个示例,条件不再作为参数传递给Puts方法。PUTRESERSNIL,为FALSE

puts("odin") || true #=> true

这意味着总回报为nil || true #=> true

相关问题