The*_*aul 3 null types scala scala-2.8
trait Link[This] {
var next:This = null
}
Run Code Online (Sandbox Code Playgroud)
给出"类型不匹配;找到:Null(null)required:this"
所以我可能需要告诉类型检查器,这将是一个可以指定为null的类型.我该怎么做呢?
(如果在提出这样的问题之前有一个我应该先阅读的网站,请指出我.我目前已经完成了Scala编程第二版的预印本的部分内容)
您必须约束This为超类Null- 这是告诉编译器该null类型的有效值的方式.(事实上,思考Any,AnyRef并且AnyVal只有muddles问题-只问你想要的东西编译)
trait Link[This >: Null] {
var next:This = null
}
Run Code Online (Sandbox Code Playgroud)
但是,我建议你避免使用null,你可以使用Option[This]和影响None- 这样的结构将允许你使用模式匹配,并且是一个非常强烈的声明,使用此字段的客户应该期望它可能没有价值.
trait Link[This] {
var next:Option[This] = None
}
Run Code Online (Sandbox Code Playgroud)