var
declares a mutable cell. Analogous to a non-final
in Java. Avoid the use of
var
unless in exceptional circumstances.
val
declares an immutable cell that is evaluated at its declaration point. Analogous to a
final
in Java.
def
declares an immutable cell that is evaluated upon each use. An argument list may follow.
Analogous to a method in Java.
lazy val
declares an immutable cell that is unevaluated until first use.
Example (welcome to the Scala interpreter)
scala> val a = 7 a: Int = 7 scala> def b = 8 b: Int scala> def c(n: Int) = n + 42 c: (Int)Int scala> var d = 9 d: Int = 9 scala> lazy val e = 10 e: Int = 10