? :
Rubyでは条件演算子()はどのように使用されますか?
例えば、これは正しいでしょうか?
<% question = question.size > 20 ? question.question.slice(0, 20)+"..." : question.question %>
ベストアンサー1
それは三項演算子、C と同じように動作します (括弧は不要です)。これは次のように動作する式です。
if_this_is_a_true_value ? then_the_result_is_this : else_it_is_this
ただし、Ruby ではif
も式なので、優先順位の問題を除けばif a then b else c end
===となります。どちらも式です。a ? b : c
例:
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
最初のケースでは括弧が必要であることに注意してください (そうでないと、Ruby は括弧の後ろに余分なジャンクがあると考え、混乱しますputs if 1
)。ただし、最後のケースでは上記の問題が発生しないため、括弧は必要ありません。
複数行の読みやすさのために、「long-if」形式を使用できます。
question = if question.size > 20 then
question.slice(0, 20) + "..."
else
question
end