Я попробовал поиск Google и не смог найти достойный пример forall. Что оно делает? Зачем нужна логическая функция?
Пожалуйста, укажите мне ссылку (кроме Scaladoc).
Ответ 1
Метод forall принимает функцию p, которая возвращает логическое значение. Семантика forall говорит: return true, если для каждого x в коллекции, p(x) истинно.
Итак:
List(1,2,3).forall(x => x < 3)
означает: true, если 1, 2 и 3 меньше 3, false в противном случае. В этом случае он будет оцениваться до false, так как это не так, все элементы меньше 3: 3 не меньше 3.
Существует аналогичный метод exists, который возвращает true, если в коллекции есть хотя бы один элемент x, так что p(x) является истинным.
Итак:
List(1,2,3).exists(x => x < 3)
означает: true, если хотя бы один из 1, 2 и 3 меньше 3, false в противном случае. В этом случае он будет оцениваться как true, поскольку в этом случае некоторый элемент меньше 3: например. 1 меньше 3.
Ответ 2
Быстрый пример того, как вы можете играть с этой функцией с помощью Scala script.
создать файл myScript.scala с помощью
println(args.forall(p => (p.equals("a"))))
и назовите его
scala myScript.scala a a a // true
scala myScript.scala a b c // false