Имеет ли изменяемые локальные переменные в функции, которые используются только для внутренних целей (например, функция не имеет побочных эффектов, по крайней мере, намеренно), все еще считается «не функциональным»?
например, в проверке стиля курса «Функциональное программирование с помощью Scala» любое var
использование считается плохим
Мой вопрос, если функция не имеет побочных эффектов, все еще не рекомендуется писать код императивного стиля?
например, вместо использования хвостовой рекурсии с шаблоном аккумулятора, что плохого в том, чтобы делать локальный цикл for и создавать локальный изменяемый объект ListBuffer
и добавлять к нему, пока ввод не изменяется?
Если ответ «да, они всегда обескураживают, даже если нет побочных эффектов», тогда в чем причина?
var
всегда не работает. Scala имеет ленивые vals и оптимизацию хвостовой рекурсии, которые позволяют полностью избежать vars.