Из программирования в Scala (второе издание), внизу p.98:
Сбалансированное отношение для программистов Scala
Предпочитайте vals, неизменные объекты и методы без побочных эффектов. Сначала доходите до них. Используйте vars, изменяемые объекты и методы с побочными эффектами, когда у вас есть конкретные потребности и оправдание для них.
На предыдущих страницах объясняется, почему предпочитают vals, неизменные объекты и методы без побочных эффектов, поэтому это предложение имеет смысл.
Но второе предложение: "Используйте vars, изменяемые объекты и методы с побочными эффектами, когда у вас есть определенная потребность и оправдание для них". не объясняется так хорошо.
Итак, мой вопрос:
Что такое обоснование или конкретная необходимость использования vars, изменяемых объектов и методов с побочным эффектом?
P.s: Было бы здорово, если бы кто-то мог привести несколько примеров для каждого из них (помимо объяснения).