ここで、Ruby のソースコードの簡単な例として、私が定義したクラスの CSV レコードを表示するメソッドで Ruby の三項演算子をどのように使用したかを紹介します。
def print_csv_record last_name.length==0 ? printf(",") : printf("\"%s\",", last_name) first_name.length==0 ? printf(",") : printf("\"%s\",", first_name) city.length==0 ? printf(",") : printf("\"%s\"", city) printf("\n")end
このメソッドからわかるように、各行は三項演算子を使用して次のように判断しています:
- 与えられたフィールドの長さが 0 の場合、最初の
printf
文を使用します。 - Otherwise, use the second
printf
statement.
少ないように見えるかもしれませんが、これで終わりです。 クールなのは、同等の if
/then
構文よりもはるかに短く、しかも非常に読みやすいことです。
Ruby の三項演算子についてもう少し情報が必要な場合は、自由に読み進めてください。
三項演算子の一般的な構文
前の例からわかるように、Ruby の三項演算子の一般的な構文は次のようになります。
test-expression ? if-true-expression : if-false-expression
前の例で、私の最初の test-expression
はこのようなものでした。
last_name.length==0
そしてその if-true-expression
は次のようになり、
printf(",")
そしてその if-false-expression
は次のようになります。
printf("\"%s\",", last_name)
希望としては三項演算子の一般的な構文を示すことによって、私の以前のコードをもう少し理解しやすくするのに役立ちました。
もう 1 つの例
三項演算子の例をもう 1 つ挙げると、数値テスト比較を使用し、2 つの可能な puts
文、つまり、テストが真と評価された場合に実行される文と、偽と評価された場合に実行される文を続けています。
# set the speedspeed = 90# somewhere later in the program ...speed > 55 ? puts("I can't drive 55!") : puts("I'm a careful driver")
ご想像のとおり、このコードのセグメントは次のように表示されます:
I can't drive 55!
(これは、私の運転習慣も要約しています。)
三項演算子はクールです。 if
/then
ステートメントを短くすることができ、なおかつ Ruby のコードを読みやすくすることができます。