なぜですか
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
あなたはおそらく意味します
var (a,b,c) = (0,0,0)
あなたが書いたのは複数の割り当てであり、パターン マッチングではないためです。
そしてその理由はただのスタイルです。Scala は不変の値を扱うことを好みますが、変更可能な値を使用することもできます。ここに限らず、Scala には、変更可能な値を操作するのに役立つ便利な機能がほとんどありません。
パターンマッチで変数を初期化できることは、その文脈では祝福と見なされるべきです!
(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
は単純です。Scala はオブジェクトの分解にInt
の extractor メソッドを使用します。Tuple3
あなたは補間器を探しています。
var a, b, c = 0
def pairing: Product = (11, 12)
*(a, b) = pairing