我试图将null赋给像这样的Double变量:
var foo = 0.0
foo = null
Run Code Online (Sandbox Code Playgroud)
但是,这会给出一个错误,即null不能隐式转换为Double
所以我这样做:
foo = null.asInstanceOf[Double]
Run Code Online (Sandbox Code Playgroud)
但是foo的新值是0.0
如何将值设置为null?
Mic*_*jac 10
你不能.Double是值类型,您只能分配null给引用类型.相反,Scala编译器将替换null为默认值0.0.
请参阅SLS 4.2中的默认值:
default type
0 Int or one of its subrange types
0L Long
0.0f Float
0.0d Double
false Boolean
Run Code Online (Sandbox Code Playgroud)
您也不能将Java原语分配给null.虽然Scala Double不是真正的原始(它实际上是Scala中的一个类),但它需要编译为doubleJava字节代码.相反,Option[Double]如果要表示完全缺失的值,则应该使用,并尝试永远不要null在Scala中使用.