有没有办法在不写两次foo的情况下编写这段代码?
foo? foo : 0
在我的情况下,foo
类似于vehicle.maintenance.starting_odometer
,所以你可以想象如果我必须检查这些对象的存在,那么代码会变得非常冗长和丑陋。
答案 0 :(得分:5)
当然,您可以使用||
:
foo || 0
析取运算符(称为or
或||
)首先查看左侧元素。如果真实(不是nil
或false
)它返回。否则,它会评估并返回右侧元素。三元运算符的工作方式相同,只是它允许您指定一个不同的值来代替原始的“左手”元素。