我试图模仿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那里发生相同类型的参数。
将表达式分配给更通用类型的变量怎么可能改变该表达式的值?我觉得这真的违反直觉。
它与拳击有关吗,所以我实际上是在调用两个不同的default函数(一次是原语int,一次是Integer)?如果是,有没有办法避免这种情况?