How do I use the conditional operator (? :) in Ruby?
How is the conditional operator ( ? : ) used in Ruby?
For example, is this correct?
<% question = question.size > 20 ? question.question.slice(0, 20)+"..." : question.question %>
It is the ternary operator, and it works like in C (the parenthesis are not required). It's an expression that works like:
if_this_is_a_true_value ? then_the_result_is_this : else_it_is_this
However, in Ruby, if is also an expression so: if a then b else c end === a ? b : c a ? b : c , except for precedence issues. Both are expressions.
Examples:
puts (if 1 then 2 else 3 end) # => 2
puts 1 ? 2 : 3 # => 2
x = if 1 then 2 else 3 end
puts x # => 2
Note that in the first case parenthesis are required (otherwise Ruby is confused because it thinks it is puts if 1 with some extra junk after it), but they are not required in the last case as said issue does not arise.
You can use the "long-if" form for readability on multiple lines:
question = if question.size > 20 then
question.slice(0, 20) + "..."
else
question
end
puts true ? "true" : "false"
=> "true"
puts false ? "true" : "false"
=> "false"
Your use of ERB suggests that you are in Rails. If so, then consider truncate , a built-in helper which will do the job for you:
<% question = truncate(question, :length=>30) %>
链接地址: http://www.djcxy.com/p/73096.html
上一篇: 运算符[] []过载
下一篇: 如何在Ruby中使用条件运算符(?:)?
