为什么Ruby打印出变量而不是字符串?

时间:2015-10-01 20:36:51

标签: ruby

使用以下声明

print @b>@d?("S";@b+=1): @b<@d?("N";@b-=1):""

我希望S输出到屏幕,如果b的val高于b,则d的值会增加。否则,请检查b是否低于d并减少b

但是,似乎打印了b + 1的值。这是怎么回事?

2 个答案:

答案 0 :(得分:2)

在ruby方法中,默认情况下始终返回最后一行。将您的代码更改为

print @b>@d?(@b+=1; "S"): @b<@d?(@b-=1; "N"):""

为了做你想要的输出。

答案 1 :(得分:1)

b + 1的值是这里返回的最后一件事:("S";@b+=1),因此,它是由print评估的内容。让我们尝试一个更简单的例子:

x = 0
# => 0 
puts (true ? ("X is incremented #{x+=1}"; "Only this is printed though") : "Never here")
# Only this is printed though
# => nil 
x
# => 1 

虽然执行了第一个语句,它递增x,但只有最后一个语句作为参数传递给puts