私は Scala に少し慣れていないので、これが少し些細なことである場合は申し訳ありません。
反復したいアイテムのリストがあります。各アイテムのチェックを実行し、そのうちの 1 つだけが失敗した場合は、関数全体が false を返すようにします。したがって、これは AND 条件と見なすことができます。つまり、最初の false に遭遇した瞬間に false を返します。
私はfor - yield
、いくつかのジェネレーター (アイテムのリスト、シーケンスなど) によって生成されたアイテムをフィルター処理する構文に慣れています。ただし、私の場合は、残りのループを実行せずに、抜け出して false を返したいだけです。通常の Java ではreturn false;
、ループ内で a を実行するだけです。
非効率的な方法 (つまり、最初の false アイテムに遭遇したときに停止しない) で、次のようにすることができます。
(for {
item <- items
if !satisfiesCondition(item)
} yield item).isEmpty
これは基本的に、フィルターを通過するアイテムがない場合、すべてのアイテムが条件を満たしていることを示しています。しかし、これは少し複雑で非効率的です (100 万個のアイテムがあり、最初のアイテムがすでに条件を満たしていないと考えてください)。
Scalaでこれを行うための最良かつ最もエレガントな方法は何ですか?