Используя тот факт, что левая часть присваивания является синтаксически шаблоном.(См. PatVarDef> PatDef> Pattern2 в SLS .)
a = b = 5
scala> val a@b = 5
a: Int = 5
b: Int = 5
x = y = z = новый объект
scala> var x@(y@z) = new Object
x: java.lang.Object = java.lang.Object@205144
y: java.lang.Object = java.lang.Object@205144
z: java.lang.Object = java.lang.Object@205144
Обратите внимание, что выражение на правом сайте оценивается только один раз.
К сожалению, этот синтаксис не работает для re присваивания (то есть для x = y = value
выеще нужно сделать x = value; y = x
).
См. также [scala-language] Цепное задание в Scala