2

なぜですか

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
4

4 に答える 4

3

あなたはおそらく意味します

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

あなたが書いたのは複数の割り当てであり、パターン マッチングではないためです。

そしてその理由はただのスタイルです。Scala は不変の値を扱うことを好みますが、変更可能な値を使用することもできます。ここに限らず、Scala には、変更可能な値を操作するのに役立つ便利な機能がほとんどありません。

パターンマッチで変数を初期化できることは、その文脈では祝福と見なされるべきです!

于 2013-10-26T00:48:08.933 に答える
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は単純です。Scala はオブジェクトの分解にIntの extractor メソッドを使用します。Tuple3

于 2013-10-26T09:48:29.777 に答える
1

あなたは補間器を探しています

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

  *(a, b) = pairing
于 2013-10-26T07:12:44.013 に答える