三項演算子
演算子だよ
「if ~ else ~」を一文で書きたいときに使うよ
あるいは、変数とか値が3つ出てくる演算子だよ
簡単に書くよ
三項演算子(読:サンコウエンザンシ 英:ternary operator)とは
プログラミングで出てくる演算子のひとつ
であり
「if ~ else ~」を一文で書きたいときに使う演算子
です。
あるいは
演算子の分類のひとつ
であり
その演算子を使った計算を眺めると、変数
(プログラミングにおける値を入れておく箱)とか値が3つ登場している演算子のこと
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として
・プログラム
・プログラミング
・if文
について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
プログラムは「人間様の代わりにコンピュータさんにあれこれ命令してくれるやつ」です。
このプログラムを実際に作る作業を「プログラミング」と言います。
プログラミングはコンピュータさんに仕事を指示する行為です。
「この場合は、あれしろ」「この場合は、これしろ」と細かく指定していきます。
さて、このコンピュータさんに対する指示ですが、条件によって、やることを変えたい場合があります。
例えば「パンがあったらパンを食べる、パンがないけどケーキがあったらケーキを食べる、パンもケーキもなかったら暴れる」とかですね。
多くのプログラミング言語では、このような条件分岐の処理を「if文」と呼ばれる構文を使って書きます。
if文の書き方は
if(パンはある?){
パンを食べる
}else{
ケーキを食べる
}
のような形が一般的です。
ifの条件に一致したら、その下に行きます。
一致しなかったら、elseの下に行きます。
これがif文の書き方です。
以上を踏まえて
if文を一文で書くときに使う演算子
が「三項演算子」です。
三項演算子を使った書き方は
条件式 ? 条件が正しいときの値 : 条件が間違っているときの値
に なります。
見やすさを考えて「?」と「:」を全角で書いていますが、本来はすべて半角で書きます。
例えば
if(変数1=="ほげ1"){
変数2="ほげ2"
}else{
変数2="ほげ3"
}
というプログラムのコードが あったとしましょう。
このコードは
1.変数1が「ほげ1」と同じだったら変数2に「ほげ2」を入れてね
2.違ったら変数2に「ほげ3」を入れてね
なif文です。
これを三項演算子を使って書くと
変数2=(変数1=="ほげ1") ? "ほげ2" : "ほげ3"
に なります。
いかがでしょう?
見た目はややこしいですが、コンパクトになりましたよね?
とはいえ、if文を、三項演算子を使った形で書き直せるのは条件付きです。
詳しくは書きませんが、条件によって変数に代入する値を変えるときのみ使えると思ってください。
条件がOKだったらあの処理とこの処理とその処理をやって~、NGだったらあっちの処理とこっちの処理をやって~、のように複雑な処理の書き換えはできません。
あとついでに、個人的な考えですが、三項演算子を使うと直感的に分かりにくくなる上に拡張性もなくなります。
処理を追加しようとすると、結局if文に書き直さないといけない場合が多いのですね。
そのため私自身は三項演算子を使わないように意識しています。
……というのが、プログラミングの話で出てくる「三項演算子」の説明です。
ここから先はプログラミングとは関係ない「三項演算子」の説明です。
世の中には「単項演算子」という演算子があります。
単項演算子は
式を書いたときに、被演算子(変数とか値)が1つだけ出てくる演算子
です。
例えば、コンピュータの世界には「インクリメント演算子」という演算子があります。
このインクリメント演算子は単項演算子です。
※インクリメント演算子の詳細が気になる方は、用語「インクリメント演算子」の説明を ご覧ください。
「二項演算子」という演算子もあります。
二項演算子は
式を書いたときに、被演算子(変数とか値)が2つ出てくる演算子
です。
例えば「1+2」という計算は被演算子が2つ(「1」と「2」)登場していますよね。
よって「+」は2項演算子です。
同じ流れで考えてください。
三項演算子は
式を書いたときに、被演算子(変数とか値)が3つ出てくる演算子
です。
プログラミングの話で出てくる三項演算子も、被演算子が3つ登場していますよね。
本来の意味で言えば「被演算子が3つ出てくる演算子」が三項演算子です。
ただし、プログラミングの話では「if~elseを一文で書ける演算子」を指して「三項演算子」と表現していることが一般的です。
一言でまとめるよ
まぁ「三項演算子」って単語が出てきたら「if~elseをコンパクトに書ける演算子、もしくは、変数
(プログラミングにおける値を入れておく箱)とか値が3つ出てくる演算子なんだな~」と お考えください。
おまけ
■検索してみる?






