Flutterのリスト操作メソッドには、.all
と .any
という二つのメソッドが存在します。これらは、特定の条件に基づいてリスト内の要素を評価する際に非常に便利です。
.allメソッド – すべての要素が条件を満たしているか確認
.all
メソッドは、リスト内のすべての要素が指定された条件を満たしているかどうかを確認するために使用されます。基本的な構文は以下の通りです。
bool allElementsMatch = iterable.every((element) => /* 条件式 */);
基本的な使い方
例えば、数値のリストがすべて偶数であるかどうかを確認する場合:
List<int> numbers = [2, 4, 6, 8, 10];
bool allEven = numbers.every((number) => number % 2 == 0);
print(allEven); // true
.anyメソッド – 一部の要素が条件を満たしているか確認
.any
メソッドは、リスト内のいずれかの要素が指定された条件を満たしているかどうかを確認します。基本的な構文は以下の通りです。
bool anyElementMatches = iterable.any((element) => /* 条件式 */);
基本的な使い方
例えば、数値のリストが奇数を含んでいるかどうかを確認する場合:
List<int> numbers = [2, 4, 6, 8, 10, 11];
bool containsOdd = numbers.any((number) => number % 2 != 0);
print(containsOdd); // true
.allと.anyの比較
.all
と .any
は、リストの要素を確認する点で対照的です。.all
はすべての要素が条件を満たしているかを確認し、.any
はいずれかの要素が条件を満たしているかを確認します。
例: すべての要素が10以上であるか
List<int> numbers1 = [12, 15, 18, 20];
bool allAboveTen1 = numbers1.every((number) => number >= 10);
print(allAboveTen1); // true
List<int> numbers2 = [8, 12, 15, 18];
bool allAboveTen2 = numbers2.every((number) => number >= 10);
print(allAboveTen2); // false
例: いずれかの要素が10以上であるか
List<int> numbers3 = [5, 8, 12, 15];
bool anyAboveTen1 = numbers3.any((number) => number >= 10);
print(anyAboveTen1); // true
List<int> numbers4 = [5, 8, 7, 9];
bool anyAboveTen2 = numbers4.any((number) => number >= 10);
print(anyAboveTen2); // false
まとめ
.all
と .any
メソッドは、リスト内の要素を効果的に評価するための強力な手段です。特定の条件がリスト全体に適用されるか、または一部の要素にのみ適用されるかに応じて、適切なメソッドを選択しましょう。これらのメソッドを活用することで、効率的で読みやすいコードを実現できます。