LoginSignup
2
1

Dartの三項演算子について

Posted at

はじめに

この記事では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つの条件があります。

  1. 変数numberに入っている値が0以下であれば"負の数です"と出力する
  2. 0と等しければ"0です"と出力する
  3. 上記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
}

まとめ

今回は三項演算子についてまとめてみました。
最後までご覧いただきありがとうございました!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1