14

Scala for the Impatient を読んでいるときに、次の質問に出くわしました。

代入 x = y = 1 が Scala で有効な状況を 1 つ考えてください。(ヒント: x に適した型を選択してください。)

この質問で著者が何を意味しているのか正確にはわかりません。割り当ては値を返さないためvar x = y = 1、 x の値として Unit() を返す必要があります。ここで何が欠けているのか誰かが指摘できますか?

ありがとう

4

5 に答える 5

13

実際、この場合xは次のとおりです。Unit

var y = 2
var x = y = 1

次のように読むことができます。

var y = 2
var x = (y = 1)

そして最後に:

var x: Unit = ()
于 2012-04-09T17:49:37.700 に答える
6

x=y=1次のように、エラーなしで REPL シェルに入力できるようになります。

var x:Unit = {}
var y = 0
x = y = 1
于 2012-04-09T17:49:47.877 に答える
3

セッター メソッドが引数を返す、あまり知られていない別のケースを次に示します。のタイプxが実際にIntここにあることに注意してください。

object AssignY {
  private var _y: Int = _
  def y = _y
  def y_=(i: Int) = { _y = i; i }
}

import AssignY._

var x = y = 1

(この機能は XScalaWT ライブラリで使用されており、その質問で説明されています。)

于 2012-04-09T21:28:49.087 に答える
1

ところで、両方の変数に同じ値を代入する必要がある場合は、次を使用します。

scala> var x@y = 1
x: 整数 = 1
y: 整数 = 1
于 2012-04-11T16:03:11.870 に答える