Rails If- Elseif- Else的简写

时间:2015-03-12 03:22:49

标签: ruby-on-rails

在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

2 个答案:

答案 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

而我个人最喜欢的,用有意图揭示的私人方法包装你的条件,或者如果它足够复杂,它是自己的对象!