【发布时间】:2015-07-03 23:14:03
【问题描述】:
当创建一个与 Pattern 匹配的递归函数时,会引发以下错误,但当使用方法创建时,它可以正常工作。你能帮我理解吗?
val power: (Int, Int) => Int = (base: Int, exp: Int) => {
exp match {
case 0 => 1
case 1 => `base`
case e => `base` * power(`base`, e - 1)
}
}
上面显示的代码会产生错误:“前向引用扩展了值的定义”。但是下面的代码可以正常工作:
def func1(base: Int, exp: Int): Int = {
exp match {
case 0 => 1
case 1 => `base`
case e => `base` * func1(`base`, e - 1)
}
}
【问题讨论】:
-
当我尝试通过 Eclipse Scala Worksheet 运行它时出现错误,但相同的代码在 scala REPL 上运行良好。谢谢 jwvh
-
我已经在 IntelliJ IDEA 14 和 15EAP 的 Scala 工作表上对其进行了测试。它有效,所以我猜这只是 Eclipse Scala 工作表问题。
标签: scala