1
當在模式匹配上創建帶遞歸的函數時,它會拋出下面的錯誤,但是當使用方法創建它時,它工作正常。你能幫我理解嗎?具有模式的Scala遞歸函數
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工作表問題。 –