缩放模式匹配默认值



假设我想使用 Scala 的模式匹配编写以下函数:

def foo(num: Int): Int = {
num match {
case 1 => 0
case x if x%2 == 0 => 1
case _ => _
}
}

但是当然,我得到行case _ => _的编译错误

我知道我可以通过将行更改为类似以下内容来解决它:case x=>x,但是为什么 Scala 的模式匹配不允许我做这样的事情?这就像我说我不在乎那里有什么只是归还它的一种方式。

因为它真的没有意义。case _的意思是"匹配任何内容,不要将值分配给符号",但=> _应该是什么意思?如果你不关心它是什么,这是否意味着编译器可以输入一个随机值?

case x => x将急切地匹配所有内容并返回相同的值。它清晰、简洁,字符数量与您想要的相同。任何阅读它的人都可以理解正在发生的事情。你可以从字面上翻译为"我不在乎那里有什么,只要匹配它并返回它"。

最新更新