本Scala for the Impatient を読んでいるときに、次の質問に出くわしました。
代入 x = y = 1 が Scala で有効な状況を 1 つ考えてください。(ヒント: x に適した型を選択してください。)
この質問で著者が何を意味しているのか正確にはわかりません。割り当ては値を返さないためvar x = y = 1
、 x の値として Unit() を返す必要があります。ここで何が欠けているのか誰かが指摘できますか?
ありがとう
本Scala for the Impatient を読んでいるときに、次の質問に出くわしました。
代入 x = y = 1 が Scala で有効な状況を 1 つ考えてください。(ヒント: x に適した型を選択してください。)
この質問で著者が何を意味しているのか正確にはわかりません。割り当ては値を返さないためvar x = y = 1
、 x の値として Unit() を返す必要があります。ここで何が欠けているのか誰かが指摘できますか?
ありがとう
実際、この場合x
は次のとおりです。Unit
var y = 2
var x = y = 1
次のように読むことができます。
var y = 2
var x = (y = 1)
そして最後に:
var x: Unit = ()
x=y=1
次のように、エラーなしで REPL シェルに入力できるようになります。
var x:Unit = {}
var y = 0
x = y = 1
セッター メソッドが引数を返す、あまり知られていない別のケースを次に示します。のタイプ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 ライブラリで使用されており、その質問で説明されています。)
ところで、両方の変数に同じ値を代入する必要がある場合は、次を使用します。
scala> var x@y = 1 x: 整数 = 1 y: 整数 = 1