Я немного новичок в Scala, поэтому извиняюсь, если это что-то немного тривиальное.
У меня есть список элементов, которые я хочу выполнить. Я должен выполнить проверку каждого из элементов, и если только один из них не работает, я хочу, чтобы вся функция вернула значение false. Таким образом, вы можете видеть это как условие И. Я хочу, чтобы это оценивалось лениво, т.е. Когда я сталкиваюсь с первым ложным возвратом false.
Я использую синтаксис for - yield
, который фильтрует элементы, сгенерированные через некоторый генератор (список элементов, последовательность и т.д.). В моем случае, однако, я просто хочу вырваться и вернуть false, не выполняя оставшуюся часть цикла. В обычной Java просто нужно сделать return false;
внутри цикла.
Неэффективным способом (т.е. не останавливаться, когда я сталкиваюсь с первым ложным элементом), я мог бы это сделать:
(for {
item <- items
if !satisfiesCondition(item)
} yield item).isEmpty
Что по существу говорит о том, что если ни один элемент не проходит через фильтр, все они удовлетворяют условию. Но это кажется немного запутанным и неэффективным (подумайте, что у вас есть 1 миллион элементов, а первый уже не удовлетворяет этому условию).
Какой лучший и самый элегантный способ сделать это в Scala?