Ruby が関数型プログラミングのパラダイムから取ったアイデアを利用するのが難しいと思われる両方の形式: つまり、すべては式であり、したがって value を返します。これは、Java のような言語が実際にはサポートしていない条件文にも当てはまります (例:
public boolean test() {
boolean x = if (1 > 2 ) { false; } else { true; };
return x;
}
単に構文的に有効ではありません)。
これは Ruby ターミナルで確認できます。
will_be_assigned_nil = false if (1 > 2) # => nil
will_be_assigned_nil # => nil
それで、あなたの質問に。最初のものは次のように書き直すことができます。
if x < y
mininum = x
else
minimum = y
end
2 番目は、他の言語の三項演算子に似ており、次と同等です。
if x > y
max = x
else
max = y
end
言語の構造を理解しようとするときは、言語のルーツと遺産を覚えておくと役立ちます。Ruby は「複数の方法でそれを行う」という哲学を Perl と共有しており、慣用的な Ruby コードはしばしばエレガンスを重視しています。
「式後」スタイルの条件は、この良い例です。メソッドの最初にガード式がある場合、次のように書くことは珍しくありません。
raise "Pre-condition x not met" unless x # (or "if !x" , preference thing)
raise "Pre-condition y not met" unless y # etc., etc.
それ以外の
if !x
raise "Pre-condition x not met"
end
if !y
raise "Pre-condition y not met"
end