在函数中,我使用简单的代码:
match{
case Some(one)=>one.copy()
case Type =>
...
case _ =>
}
存在错误,因为 Nothing 是每种类型的子类型,并且 Nothing 没有复制功能。
AnyOne 知道如何在使用匹配案例阶段删除 Nothing 和 Null 类型匹配吗?
首先要注意的是,永远不存在的实例Nothing
,因此您永远不会遇到匹配值为 的情况Nothing
。
也就是说,对于一般情况,最明显的方法是简单地为第一个案例提供案例 - 案例按顺序进行测试和执行,因此在问题发生之前添加它们将导致您想要的行为:
??? match {
case null => ???
case Some(one) => one.copy()
case Type =>
...
case _ => ???
}
显然,该类型的要点之一Option
是避免需要null
检查。如果您最终得到null
一个Option
变量,那么可能值得更改您的代码,以免发生。