2013-10-26 49 views

回答

1

您正在尋找the intupolator.

var a, b, c = 0 
    def pairing: Product = (11, 12) 

    *(a, b) = pairing 
3

你大概的意思

var (a,b,c) = (0,0,0) 

,因爲你寫的是多任務,沒有模式匹配。

而原因只是風格。 Scala傾向於使用不可變的值,但允許使用可變值。 Scala是 - 不僅在這裏 - 相當短的便利功能,以幫助您處理可變值。

你可以使用模式匹配來初始化變量,在這種情況下應該被認爲是一種祝福!

0

您可以在不使用valvar的情況下引入綁定的唯一方法是用於理解或模式匹配。正如雷克斯所示,你打算的形式是val (a, b, c) = (0, 1, 2)。這被稱爲「無可辯駁的模式匹配」,因爲在val之後右邊和模式之間沒有適應性的錯位。並不限於TupleN。例如: -

case class CC1(i: Int, d: Double, s: String) 

val CC1(j, e, t) = CC1(1, 2.0, "three") 
j: Int = 1 
e: Double = 2.0 
t: String = three 
1

(0,0,0)Tuple3

scala> var a,b,c = (0,0,0) 
a: (Int, Int, Int) = (0,0,0) 
b: (Int, Int, Int) = (0,0,0) 
c: (Int, Int, Int) = (0,0,0) 

每個變量abc受到影響,其元組

相反地,當你做

scala> var (a,b,c) = (0,0,0) 
a: Int = 0 
b: Int = 0 
c: Int = 0 

abc簡單Int,斯卡拉使用Tuple3的提取方法解構的對象。