Scala允許您定義函數內部的函數,而在其他函數中定義的函數稱為局部函數。這是一個階乘計算器的實現,我們使用傳統的技術來調用第二個嵌套方法來完成工作。
嘗試以下程式來瞭解如何實現嵌套函數。
示例
object Demo {
def main(args: Array[String]) {
println( factorial(0) )
println( factorial(1) )
println( factorial(2) )
println( factorial(3) )
}
def factorial(i: Int): Int = {
def fact(i: Int, accumulator: Int): Int = {
if (i <= 1)
accumulator
else
fact(i - 1, i * accumulator)
}
fact(i, 1)
}
}
將上述程式保存在原始檔案:Demo.scala中,使用以下命令編譯和執行此程式。
$ scalac Demo.scala
$ scala Demo
1
1
2
6
像許多語言中的局部變數聲明一樣,嵌套方法僅在封閉方法中可見。如果您嘗試在factorial()
之外調用fact()
,則會在編譯器時出現錯誤。