var a,b,c = (0,0,0)
允許的,但不是:
var a,b,c = (0,0,0)
(a,b,c) = (0,0,0) <<< fails to compile
a,b,c = (0,0,0) <<< fails to compile
var a,b,c = (0,0,0)
允許的,但不是:
var a,b,c = (0,0,0)
(a,b,c) = (0,0,0) <<< fails to compile
a,b,c = (0,0,0) <<< fails to compile
您正在尋找the intupolator.
var a, b, c = 0
def pairing: Product = (11, 12)
*(a, b) = pairing
你大概的意思
var (a,b,c) = (0,0,0)
,因爲你寫的是多任務,沒有模式匹配。
而原因只是風格。 Scala傾向於使用不可變的值,但允許使用可變值。 Scala是 - 不僅在這裏 - 相當短的便利功能,以幫助您處理可變值。
你可以使用模式匹配來初始化變量,在這種情況下應該被認爲是一種祝福!
您可以在不使用val
或var
的情況下引入綁定的唯一方法是用於理解或模式匹配。正如雷克斯所示,你打算的形式是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
(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)
每個變量a
,b
,c
受到影響,其元組
相反地,當你做
scala> var (a,b,c) = (0,0,0)
a: Int = 0
b: Int = 0
c: Int = 0
a
,b
,c
簡單Int
,斯卡拉使用Tuple3
的提取方法解構的對象。