Scala definition variables are actually pattern matching. That is, when you write
val x = y
println(x)
This is basically the same as writing
y match {
case x =>
println(x)
This can be easily seen in things like this:
val List(a, b, c) = someList
val RegexPattern(year, month, date) = "2013-10-23"
, - :
object X {
val One = 1
}
scala> val X.One = 1
scala> val X.One = 2
scala.MatchError: 2 (of class java.lang.Integer)
:
object Y {
val ymd = """(\d\d\d\d)-(\d\d)-(\d\d)""".r
}
scala> val Y.ymd(year, month, day) = "2013-10-23"
year: String = 2013
month: String = 10
day: String = 23
, , , , .