Anidamiento de funciones en Scala

Scala 函数Funciones de Scala

Podemos definir funciones dentro de funciones en Scala. Las funciones definidas dentro de una función se denominan funciones locales.

En el siguiente ejemplo implementamos el cálculo factorial y utilizamos una función anidada:

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)
   }
}

Al ejecutar el código anterior, el resultado es:

$ scalac Test.scala
$ scala Test
1
1
2
6

Scala 函数Funciones de Scala

Otras extensiones