Когда истина, Scala существует, останавливается на первом элементе, который удовлетворяет предикату? - PullRequest
1 голос
/ 27 января 2020

Мое внутреннее чувство таково, что, конечно, так и должно быть. Но как мне на самом деле проверить? Компьютер настолько быстр, что я не заметил бы разницы в несколько миллисекунд. Например:

(2 to Math.floor(Math.sqrt(121330189)).toInt).exists(121330189 % _ == 0)

Локально, он дает ответ немедленно. В Scast ie большая часть задержки связана с соединением Inte rnet.

Остановится ли это на 101 или 109 или go через остальные?

1 Ответ

5 голосов
/ 27 января 2020

Останавливается рано, см., Например, https://github.com/scala/scala/blob/v2.12.0/src/library/scala/collection/Iterator.scala#L958.

Вы можете провести тестирование на небольшом диапазоне, добавив некоторые инструменты (отпечаток) в функцию предиката, чтобы определить, сколько раз это называется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...