Последние две строки заставляют компилятор выполнить весь цикл, чтобы найти значение x
.В противном случае он может обнаружить, что x
вообще не используется, и проигнорировать цикл, учитывая, что внутри него не выполняется "настоящая" работа.Даже если sum()
вызывается неоднократно, результат накопления возвращаемого значения в конце будет отброшен, если мы ничего не сделаем с x
.
Конечно, это предполагает, что оператор println()
внутрицикл может быть безопасно проигнорирован, я не уверен, что компилятор может принять такое решение.Это был бы один агрессивный компилятор!