在Rails中我知道代表If-Else的简写就是这个
if a==b
do_something(a)
else
do_something(b)
end
简写a==b ? do_something(a) : do_something(b)
我如何在if-elseif-else
声明中表示这一点?
if a==b
do_something(a)
elsif a==c
do_something(c)
else
do_something(b)
end
答案 0 :(得分:2)
你可以试试这个:
(a == b) ? do_something(a) : (a == c) ? do_something(c) : do_something(b)
或者
(a == b) ? do_something(a) : ((a == c) ? do_something(c) : do_something(b))
答案 1 :(得分:0)
称这种速记不太准确。那是ternary operator,代表一个条件。没有elsif版本。
至于使代码更清晰,如果你有很多elsifs,case语句会更好看
case a
when b then do_something
...
end
而我个人最喜欢的,用有意图揭示的私人方法包装你的条件,或者如果它足够复杂,它是自己的对象!