1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Dart】三項演算子(Ternary operator)でif文をシンプルにする

Last updated at Posted at 2022-05-01

はじめに

Flutterでアプリを作るに当たってDartを上手に使いこなすことはアプリ制作の効率を格段に上げます

長いコードは簡潔に、他のエンジニアにはわかりやすくコードを書くことで結果的に自分が保守をする側に回っても効率的なアプリのマネージメントができると言うわけです

そこで今回は三項演算子を用いるとどれほどシンプルなコードが書けるかまとめます

三項演算子とは

プログラミングではif/else文を使うことがありますが
これを一文で書いたものを三項演算子と言います
ただ「何が『三』なの?」と疑問に思う方もいると思うので簡単にまとめます

単項演算子

単項演算子とは式を書いたときに被演算子が1つだけ登場する演算子です
例を挙げるとインクリメント演算子デクリメント演算子です

unary_operator.dart
$i = 1;
$i++;

この"++"に当たるのが単項演算子です
つまり変数や値を1つしか取らない演算子のことを言います

二項演算子

二項演算子とは被演算子が2つ登場する演算子です

binary_operator.dart
$i = 1 + 2;

この"+"は2つの値を演算する時に使うので二項演算子であると言えます

三項演算子

三項演算子とは被演算子が3つ登場する演算子です

ternary_operator.dart
int $i = 1;
$i == 1 ? print('true') : print('false');

この場合"?"と":"の前後に3つの変数や関数があると思います
そのため3つの項があるという意味で三項演算子と呼ばれます

三項演算子の利便性

if/else文を使った場合と比較してどれほどコードが短くなるか見ていきましょう

if/else文で条件分岐を行なった場合

if_else.dart
main() {
  int number = 15;
  
  if (number > 20) {
    print('Huge number!');
  } else {
    print('Tiny Number!');
  }
}

以上のようなシンプルなものでも5行のコードを書くことになりました

三項演算子でまとめた場合

ternary_operator.dart
main() {
  int number = 15;
  
  number > 20 ? print('Huge number!') : print('Tiny Number!');
}

この場合には1行でまとめることができました

使い方

三項演算子は "?"の左側がbool型の"true"である場合に":"の左側が実行され、"false"である場合には":"の右側が実行されます

それを利用して以下のように
三項演算子を使った後の実行結果を直接変数に入れることもできます

ternary_operator.dart
main() {
  int $i = 100;
  
  bool $booleanAnswer = $i > 50 ? true : false;
  
}

注意

三項演算子は便利な書き方ですが複雑なif/else処理が行えないことには注意が必要です

また1行で書けるのが魅力的ですがそれ故に理解しづらくなってしまう可能性もあります

自分にとってもそのコードを読む他のエンジニアにとっても理解しやすいようなコードを書くために、適宜三項演算子を使うべきかどうかは考える必要があると思います

まとめ

三項演算子はコードが長くならないためには非常に効果的な演算子です

一方であくまで1演算子であることから常に使わなくてはいけないというわけではありませんので、わかりやすいコードを作るために上手に使うことを心がけましょう

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?