men*_*ics 10 scala unreachable-code
我是Scala的新手...这是代码:
def ack2(m: BigInt, n: BigInt): BigInt = {
val z = BigInt(0)
(m,n) match {
case (z,_) => n+1
case (_,z) => ack2(m-1,1) // Compiler says unreachable code on the paren of ack2(
case _ => ack2(m-1, ack2(m, n-1)) // Compiler says unreachable code on the paren of ack2(
}
}
Run Code Online (Sandbox Code Playgroud)
我试图理解......为什么会出现这个错误?
注意:我正在使用Scala Eclipse Plugin 2.8.0.r21376-b20100408034031 ch.epfl.lamp.sdt.feature.group
sep*_*p2k 29
模式匹配中的z不是指你在外面声明的z,它引入了一个新的变量绑定.因此,第一种情况将匹配每个可能的对(将z绑定到该对的第一个元素并丢弃第二个),并且永远不会达到其他情况.
如果用z图案替换
`z`
Run Code Online (Sandbox Code Playgroud)
它将引用现有的z而不引入新的绑定,因此它将按您的意图工作.如果您不喜欢带反引号的语法,也可以将z重命名为Z.
| 归档时间: |
|
| 查看次数: |
3348 次 |
| 最近记录: |