Aquí se ve una versión limitada de la coincidencia de patrones al inicializar variables. Tenga en cuenta que esto funciona no sólo para tuplas:
val a :: b = List(1,2,3)
println(a) //1
println(b) //List(2, 3)
Esta característica parece ser prestado directamente de Haskell, donde se puede utilizar patrones para la inicialización, así:
let (a,b) = getTuple
in a*b
Como Haskell no tiene datos mutables, no hay forma de asignar algo.
En Scala usted podría hacer algo como esto, pero supongo que esto se consideró demasiado confuso, o tal vez demasiado difícil de implementar. Siempre puede usar una expresión match
como de costumbre, y a menudo solo necesita un case
, p. Ej. List((1,2),(3,4)).map{ case (a,b) => a*b }
.