Scala嵌套函數
Scala允許在一個函數內部定義其他函數定義的函數,並可被局部函數調用。這裡是一個階乘計算器,在這裡使用調用第二個函數,嵌套方式是傳統技術的一個實現:
object Test { 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) } }
當上述代碼被編譯和執行時,它產生了以下結果:
C:/>scalac Test.scala C:/>scala Test 1 1 2 6 C:/>
像在許多語言中的局部變量聲明,嵌套方法隻封閉方法內可見。如果試圖調用 fact() 在factorial()之外,將會得到一個編譯器錯誤。