defaultC#のキーワードを真似してみました:
private class Default[T] {
private var default : T = _
def get = default
}
次に、パッケージ オブジェクトで次のように定義します。
def default[T] = new Default[T].get
と思っdefault[Int]ていましたが0、
println(default[String])
println(default[Int])
println(default[Double])
println(default[Boolean])
すべてのプリントnull。でも
val x = default[Int]
println(x)
印刷し0ます。型注釈を追加すると、: Any再びx印刷nullされます。
同じタイプの引数がそこで起こっていることprintlnを期待しているので、私は推測しています。Any
より一般的な型の変数に式を代入すると、その式の値が変わる可能性があるのはどうしてですか? 私はそれが本当に直観に反していると思います。
ボクシングと何か関係があるので、実際には2つの異なるdefault関数を呼び出しています(一度はプリミティブintで、一度はでInteger)? はいの場合、それを回避する方法はありますか?