Ruby で条件演算子 (? :) を使用するにはどうすればいいですか? 質問する

Ruby で条件演算子 (? :) を使用するにはどうすればいいですか? 質問する

? :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

おすすめ記事