Есть ли в Scala какой-то синтаксический сахар для «непреложных классных сеттеров»?scala неизменный класс vals сеттеры
Вот пример:
class Bob (val x:Int, val y:String)
Для того, чтобы изменить x
или y
, я могу реализовать это следующим образом:
object Bob {
def updX (b:Bob) (x:Int) = new Bob (x, b.y)
def updY (b:Bob) (y:String) = new Bob (b.x, y)
}
class Bob (val x:Int, val y:String) {
def updX (x:Int) = Bob.updX(this)(x)
def updY (y:String) = Bob.updY(this)(y)
}
Это решение ужасно, потому что некоторые из моих классов имеют 8 параметров ,
Есть ли лучший способ достичь этого?
Вы имеете в виду метод 'copy' на класс case? –