Dart ListクラスsingleWhere()メソッド

Dar言語StreamクラスtoSet()メソッドDart

Dart ListクラスのsingleWhere()メソッドについてメモ書き。

singleWhere()は条件を満たす要素1つを返すメソッド。
第1引数で条件を判定する関数を指定。
第2引数はオプション引数「orElse:」。条件に一致しない場合の処理を記述する。第2引数で指定しない場合、StateErrorクラスを返す。
条件を満たす要素が複数ある場合はStateErrorクラスを返す。

コーディングでsingleWhere()メソッドを確認。
先ずは第1引数のみを指定。

void main() {
  try {
    final listTest = <String>[
      "Apple",
      "Orange",
      "Banana",
      "grape",
      "Orange",
    ];
    String res = listTest.singleWhere((element) => element == "Apple");
    print(res);
  } catch (e) {
    print(e.toString());
  }
}

実行結果。

Apple

次は条件に一致しない場合を確認。

void main() {
  try {
    final listTest = <String>[
      "Apple",
      "Orange",
      "Banana",
      "grape",
      "Orange",
    ];
    String res = listTest.singleWhere((element) => element == "Rice");
    print(res);
  } catch (e) {
    print(e.toString());
  }
}

実行結果。

Bad state: No element

第2引数で条件に一致しない場合の戻りを指定。

void main() {
  try {
    final listTest = <String>[
      "Apple",
      "Orange",
      "Banana",
      "grape",
      "Orange",
    ];
    String res = listTest.singleWhere(
      (element) => element == "Rice",
      orElse: () => "No Element",
    );
    print(res);
  } catch (e) {
    print(e.toString());
  }
}

実行結果。
「orElse:」で指定した「No Element」が返る。

No Element

最後は条件にマッチする要素が複数ある場合。

void main() {
  try {
    final listTest = <String>[
      "Apple",
      "Orange",
      "Banana",
      "grape",
      "Orange",
    ];
    String res = listTest.singleWhere(
      (element) => element == "Orange",
      orElse: () => "No Element",
    );
    print(res);
  } catch (e) {
    print(e.toString());
  }
}

実行結果。
StateErrorクラスを返す。

Bad state: Too many elements

コメント

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