请看下面的函数:
def fMatch(s: String) = {
s match {
case "a" => println("It was a")
case _ => println("It was something else")
}
}
这个模式很匹配:
scala> fMatch("a")
It was a
scala> fMatch("b")
It was something else
我想要能够做到以下事情:def mMatch(s: String) = {
val target: String = "a"
s match {
case target => println("It was" + target)
case _ => println("It was something else")
}
}
这会产生以下错误:fMatch: (s: String)Unit
<console>:12: error: unreachable code
case _ => println("It was something else")
我猜这是因为它认为target实际上是你想要指定给输入的任何内容的名称。两个问题:
为什么会出现这种行为?不能只在范围内查找具有适当类型的现有变量并首先使用它们,如果找不到,则将target视为要进行模式匹配的名称吗?
是否有解决方法?有没有办法针对变量进行模式匹配?最终可以使用大型if语句,但match case更加优雅。