Anidamiento de funciones en 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 6Otras extensiones
Funciones de Scala