How would I express the following java code in scala?
a = b = c;
By the way, I'm re-assigning variables (not declaring).
How would I express the following java code in scala?
a = b = c;
By the way, I'm re-assigning variables (not declaring).
val b = c
val a = b
You can't write
val a = b = c
since that defines an expression
The "return type" of the expression (assignment) b = c
is Unit
, I'm afraid, which means this syntax is not valid.
The closest shortcut syntax in Scala can only be used when you declare a var
or val
.
scala> val c = 1
c: Int = 1
scala> val a, b = c
a: Int = 1
b: Int = 1
From the Scala Reference, Section 4.1
A value declaration val x1 , ... , xn: T is a shorthand for the sequence of value declarations val x1: T ; ...; val xn: T. A value definition val p1, ..., pn = e is a shorthand for the sequence of value definitions val p1 = e ; ...; val pn = e . A value definition val p1, ... , pn : T = e is a shorthand for the sequence of value definitions val p1 : T = e ; ...; val pn: T = e .
This doesn't work for re-assignement to a var
. The C/Java style doesn't work for reasons explained here: What is the Motivation for Scala Assignment Evaluating to Unit
b = c; a = b
Awkward, I know. That's Scala pretty much telling you "don't do that". Consider it the Scala version of Python's space identation for block delimitation.