1. ホーム
  2. ルビー

[解決済み】Rubyで条件演算子(? :)を使うには?

2022-03-27 07:55:52

質問

条件演算子( ? : )はRubyで使われていますか?

例えば、こんな感じで良いのでしょうか?

<% question = question.size > 20 ? question.question.slice(0, 20)+"..." : question.question %>

解決方法は?

それは 三項演算子 で、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