gpt4 book ai didi

scala - 在分配 "null"之前,必须限制类型是什么?

转载 作者:行者123 更新时间:2023-12-03 23:34:47 25 4
gpt4 key购买 nike

trait Link[This] {
var next:This = null
}

给出“类型不匹配;发现:Null(null) required: This”

所以大概我需要告诉类型检查器这将是一个可以分配为空的类型。我该怎么做?

(如果在提出此类问题之前我应该​​先阅读一个网站,请指点我。我目前正在编写《Scala 编程》第二版的预印本)

最佳答案

您必须将 This 限制为 Null 的父类(super class) - 这是告诉编译器 null 是有效值的方式对于那种类型。 (事实上​​,考虑 AnyAnyRefAnyVal 只会混淆问题 - 只需向编译器询问您想要什么!)

trait Link[This >: Null] {
var next:This = null
}

但是,我建议您避免使用 null,您可以使用 Option[This] 并影响 None - 这样的构造会允许您使用模式匹配,并且是一个非常强烈的声明,即使用此字段的客户应该期望它可能没有值(value)。

trait Link[This] {
var next:Option[This] = None
}

关于scala - 在分配 "null"之前,必须限制类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4431614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com