Документы Scala Tour Of Scala объясняют параметры передачи по имени, используя в качестве примера функцию whileLoop.
def whileLoop(condition: => Boolean)(body: => Unit): Unit =
if (condition) {
body
whileLoop(condition)(body)
}
var i = 2
whileLoop (i > 0) {
println(i)
i -= 1
} // prints 2 1
В этом разделе объясняется, что если условие не выполняется, то тело не оценивается, что повышает производительность, не оценивая тело кода, который не используется.
Использует ли реализация Scala while
уже параметры передачи по имени?
Если есть причина или особые случаи, когда реализация не может использовать параметры передачи по имени, пожалуйста, объясните мне, я пока не смог найти какую-либо информацию об этом.
РЕДАКТИРОВАТЬ: Согласно ответу Valy Dia (https://stackoverflow.com/users/5826349/valy-dia), я хотел бы добавить еще один вопрос ...
Будет ли реализация метода оператора while работать лучше, чем сам оператор, если в некоторых случаях можно вообще не оценивать тело? Если это так, зачем вообще использовать оператор while?
Я попытаюсь проверить это, но я новичок в Scala, так что это может занять некоторое время. Если бы кто-то хотел объяснить, это было бы здорово.
Ура!