是否有任何理由认为匹配空列表应该使用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.
}
是否有任何理由认为匹配空列表应该使用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.
}
2条答案
按热度按时间k3fezbri1#
如果您只是测试empty/notempty,那么就没有什么可供选择的了
if
或许更有意义。match
当有多个选项时进入游戏:通常情况下,您可以通过使用适当的方法避免或至少推迟此测试。例如,
take(1)
在空列表上工作head
会失败的。以及headOption.map(...)
可用于安全处理第一个元素(如果存在)。vi4fp9gy2#
蒂姆已经有了一个很好的答案,但我想换一个Angular 。
对于列表(或其他集合),
.head
以及.tail
不安全和if
很容易在错误的分支中意外地使用它们(或者完全忘记测试),而case
无需调用这些函数。如果您的函数不需要调用它们,也不需要检查更复杂的条件,那么您也可以使用
if
.