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

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

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

lastWhere()メソッドは第1引数で指定した条件を満たす、最後の配列要素を返す。
第2引数は名前付きオプション引数で、「orElse:」の後に条件を満たさなかった場合の処理を記述する。第2引数を省略した場合、StateErrorクラスを返す。

コーディングでlastWhere()を確認。

void main() {
  try {
    final listTest = <String>[
      "Apple",
      "Orange",
      "Banana1",
      "grape",
      "Banana2",
    ];
    final last =
        listTest.lastWhere((element) => RegExp("Banana").hasMatch(element));
    print(last);
  } catch (e) {
    print(e.toString());
  }
}

実行結果。
“Banana”を含む末尾の配列要素を返す。

Banana2

次は存在しない条件を指定。

void main() {
  try {
    final listTest = <String>[
      "Apple",
      "Orange",
      "Banana1",
      "grape",
      "Banana2",
    ];
    final last = listTest.lastWhere(
      (element) => RegExp("Rice").hasMatch(element),
    );
    print(last);
  } catch (e) {
    print(e.toString());
  }
}

実行結果。
配列内に”Rice”が存在しないのでStateErrorを返す。

Bad state: No element

第2引数orElseで条件にマッチしなかった場合の処理を追加。

void main() {
  try {
    final listTest = <String>[
      "Apple",
      "Orange",
      "Banana1",
      "grape",
      "Banana2",
    ];
    final last = listTest.lastWhere(
      (element) => RegExp("Rice").hasMatch(element),
      orElse: () => "マッチする文字列は存在しません",
    );
    print(last);
  } catch (e) {
    print(e.toString());
  }
}

実行結果。
第2引数の処理が実行される。

マッチする文字列は存在しません

コメント

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