Scala allows you to decide whether a variable is immutable (read-only) or not (readwrite) when you declare it.
immutable “variable”
an immutable “variable” is declared with the keyword val
(think value
object):
val array: Array[String] = new Array(5)
A val
must be initialized when it is declared.
mutable variable
Similarly, a mutable variable is declared with the keyword var
and it must also be initialized immediately, even though it can be changed later.
var stockPrice: Double = 100.0
Note
There are a few exceptions to the rule that you must initialize vals and vars when they are declared. For example, keyword(val
or var
) can be used with a constructor parameter.
code example
class Person(val name: String, var age: Int)
Why use immutable “variable”
Use immutable values whenever possible to eliminate a class of bugs caused by mutability.
- For example, a mutable object is dangerous as a key in hash-based maps.
- More common is unexpected behavior when an object you are using is being changed by someone else.
Ref