0

在函数中,我使用简单的代码:

 match{
   case Some(one)=>one.copy()
   case Type =>
   ...
   case _ =>
}

存在错误,因为 Nothing 是每种类型的子类型,并且 Nothing 没有复制功能。

AnyOne 知道如何在使用匹配案例阶段删除 Nothing 和 Null 类型匹配吗?

4

1 回答 1

1

首先要注意的是,永远不存在的实例Nothing,因此您永远不会遇到匹配值为 的情况Nothing

也就是说,对于一般情况,最明显的方法是简单地为第一个案例提供案例 - 案例按顺序进行测试和执行,因此在问题发生之前添加它们将导致您想要的行为:

??? match {
   case null => ???
   case Some(one) => one.copy()
   case Type =>
   ...
   case _ => ???
}

显然,该类型的要点之一Option是避免需要null检查。如果您最终得到null一个Option变量,那么可能值得更改您的代码,以免发生。

于 2014-08-06T11:53:35.450 回答