Rubyの三項演算子はエクセルのIF関数に似ている?

比較

Ruby
「条件 ? TRUEの場合 : FALSEの場合」
「 x >= 80 ? “合格” : “不合格” 」
Excel
「=IF(条件,TRUEの場合,FALSEの場合)」
「 =IF(A1>=80,”合格,”不合格”) 」

使用方法

まず結果を返す2つの値が決まっていることが前提。

例:80点以上だと「合格」と表示し、それ以外だと「不合格」と表示する。
条件は点数xが80以上ということ。
TRUEなら「合格」
FALSEなら「不合格」

コードはこう。

x >= 80 ? "合格" : "不合格"

xの値によって合格か不合格かの文字列を返すようになっています。
そのまま表示してもいいし、変数に入れることもできます。

#変数に入れる
result = x >= 80 ? "合格" : "不合格"
puts result
#そのまま表示する
puts x >= 80 ? "合格" : "不合格"

・三項演算子は1行で書く。
・シンプルに使いたいなら戻り値(出力)は文字列やオブジェクトが返るようにする。
・このコード1行全体が1つの戻り値を示し、変数に格納したり、そのまま表示したりできる。

三項演算子を使用する場合は、条件ができるだけめちゃめちゃシンプルであること。(私はそうしています。)

「if文」書ければ必要ないよね?

if文でも同じことが書けるので、必ず覚える必要はない。
でも、三項演算子が書けるとコード書いてるときに条件分岐を「サクッ!」と書けるよね!ということ。
ほんのちょっとのことだけど、直感的に使えるようになると結構ラクだったりする。
ここがポイント!「サクッと直感的に!」っていうのがとてもいい。

「覚え方」は意外と簡単!?

ExcelのIFを基本にして、区切り文字を 「?」「:」の順にするだけだから。
共通しているのは、3つの項目(条件、真、偽)を区切って書くだけ。
シンプルな2分岐には結構使えます。
私も最初は、
「覚えることは少ないほうがいい!」
「if文で同じことができるなら、覚えることは少ないほうがいい!」
と思っていました。
いまも思っています。
でも、そこはコストと効果の個人の判断だと思います。
私はシンプルな2分岐なら三項演算子を使っています。

タイトルとURLをコピーしました