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()
,則會在編譯器時出現錯誤。