scala - 使用 case/match 或 if/else 匹配空列表?
问题描述
除了样式之外,是否有任何理由应该使用 case/match 而不是 if/else 来匹配空列表?例如:
val a: List
def compute: Int =
if (a.isEmpty) 0
else a.sum
相对
def compute: Int =
a match {
case Nil => 0
case _ => a.sum // This is bad. For sake of illustration only.
}
解决方案
蒂姆已经有了一个很好的答案,但我想换个角度看。
对于列表(或其他集合),.head
并且.tail
是不安全的,并且if
很容易在错误的分支中意外使用它们(或根本忘记测试),同时case
避免需要调用这些函数。
如果您的函数不需要调用它们并且不需要检查更复杂的条件,您也可以使用if
.
推荐阅读
- xml - 如何在 SonarQube 中为 XML 创建自定义规则?
- javascript - 为什么我只从 map 函数中收到一个值?
- python-3.x - 在序列化之前更改信息
- android - firebase实时cli下载字节和firebase控制台下载字节不匹配
- java - 设置构造函数和数组列表以接受多个参数 (Java)
- java - 在 Java 中的自定义注释中组和有效负载的用途是什么?
- python - 子图索引如何在 Python 中工作?
- android - Firebase 存储“发送网络请求 GET 时出错”
- php - Flutter Firebase Auth - PHP 服务器中的令牌验证问题
- excel - 基于“是否为空”合并行值