使用以下声明
print @b>@d?("S";@b+=1): @b<@d?("N";@b-=1):""
我希望S
输出到屏幕,如果b
的val高于b
,则d
的值会增加。否则,请检查b
是否低于d
并减少b
。
但是,似乎打印了b + 1
的值。这是怎么回事?
答案 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
。