Много написано о преимуществах неизменяемого состояния, но существуют ли распространенные случаи в Scala, где имеет смысл предпочесть изменчивые классы? (Это вопрос Scala новичков от кого-то с фоном в "классическом" дизайне ООП с использованием изменяемых классов.)
Для чего-то тривиального, как трехмерный класс Point, я получаю преимущества неизменности. Но как насчет чего-то типа класса Motor, который предоставляет множество контрольных переменных и/или показаний датчиков? Может ли опытный разработчик Scala писать такой класс неизменным? В этом случае "скорость" будет отображаться внутри как "val" вместо "var", а метод "setSpeed" возвращает новый экземпляр класса? Точно так же каждое новое считывание с датчика, описывающего внутреннее состояние двигателя, вызывает создание экземпляра двигателя для экземпляра?
"Старый способ" выполнения ООП в Java или С# с использованием классов для инкапсуляции изменчивого состояния, похоже, очень хорошо подходит для примера с двигателем. Поэтому мне любопытно узнать, сможете ли вы когда-либо получить опыт использования парадигмы неизменяемого состояния, вы бы даже создали такой класс, как Motor, который был бы неизменным.