はじめに
この記事ではDart言語の三項演算子ついて簡単にまとめています。
三項演算子
基本
条件を判定する際にif/else文を使用することがありますが、これを一文で書いたものを三項演算子といいます。
条件はクエスチョンマーク(?)で、条件が成立した(真値 = true)の場合に実行する式とコロン(:)、そして条件が不成立(偽値 = false)の場合に実行する式が最後に来ます。
三項演算子は、3つのオペランドを取る演算子です。
※オペランドとは、コンピュータの演算における値や変数のことです。
オぺランドは演算の種類や内容を表す演算子(オペレータ)によって演算対象となるもので、例えば「7×3」という計算式があれば、「7」と「3」がオペランドになります。
以下は三項演算子の基本的な書き方になります。
(条件) ? trueの場合 : falseの場合
以下の例では、myNumberという変数に入っている値を2で割った時に、0になるかどうかを条件としています。
22を2で割ると0になるので 偶数です と出力されます。
var myNumber = 20;
myNumber % 2 == 0 ? print("偶数です") : print("奇数です");
// 出力結果 偶数です
上記の三項演算子をif/else文で書くと下記のようになります。
int myNumber = 20;
if (myNumber % 2 == 0) {
print('偶数です');
} else {
print('奇数です');
}
}
// 出力結果 偶数です
条件チェーン
三項演算子は右結合で、複数の条件を順番にチェックする「連鎖」が可能です。
var number = 30;
number < 0 ? print("負の数です") : number == 0 ? print("0です") : print("正の数です");
// 出力結果 正の数です
今回の例では3つの条件があります。
- 変数numberに入っている値が0以下であれば"負の数です"と出力する
- 0と等しければ"0です"と出力する
- 上記2つの条件に当てはまらない場合は"正の数です"と出力する
Nullチェック式
この式はダブルクエスチョンマーク(??)を使用し、nullのチェックに使用します。
代入する変数がnullでないならその値を使い、nullなら右辺値を使います。
expr1 ?? expr2
expr1がnon-null(nullでない)の場合はその値を返し、nullの場合はexpr2の値を評価して返します。
void main() {
int? nullableValue ;
int? answer ;
// nullableValueがnullでない場合
nullableValue = 100;
answer = nullableValue ?? 0;
print(answer); // 100
// nullableValueがnullの場合
// 右辺値の0を使います。
nullableValue = null;
answer = nullableValue ?? 0;
print(answer); // 0
}
まとめ
今回は三項演算子についてまとめてみました。
最後までご覧いただきありがとうございました!