No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Nested Functions

8/16
Recursos

Aportes 6

Preguntas 0

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Por si a alguno aún no le queda claro, algunas notas:

// Funciones anidadas: Una función está anidada cuando está definida dentro de otra
func chooseStepFunction(backward: Bool) -> (Int) -> Int { // Función que devuelve una función
    func stepFoward(_ input: Int) -> Int { // Función anidada
        return input + 1
    }
    func stepBackward(_ input: Int) -> Int { // Función anidada
        return input - 1
    }
    return backward ? stepBackward : stepFoward
}

var value = -7
let moveNearerZero = chooseStepFunction(backward: value > 0) // Esto tendrá como valor una función que acepta un entero y retorna un entero
while value != 0 {
    print("El valor actual es \(value).")
    value = moveNearerZero(value) // Por eso aquí al llamar esa variable, le mando un parámetro
}
print("Cero!")```

Este video aclara lo explicado en el anterior

Resumen

Se trata de anidar funciones dentro de otras. Esto nos permite encapsular ciertas funciones dentro de otra y que no queremos que sean utilizadas en otro lugar.


func chooseStepFunction(backward: Bool) -> (Int) -> Int {
    func stepForward(_ input: Int) -> Int {
        return input + 1
    }

    func stepBackward(_ input: Int) -> Int {
        return input - 1
    }
    return backward ? stepBackward : stepForward
}

var value = 7
let moveNearerZero = chooseStepFunction(backward: value > 0)
while value != 0 {
    print("\(value)...")
    value = moveNearerZero(value)
}
print("Cero!!")

De esta manera, las funciones anidadas no podrán ser invocadas de forma independiente, solo a través de la función que las contiene.

Swift me esta enamorando! ❤️

Se trata de anidar funciones dentro de otras. Esto nos permite encapsular ciertas funciones dentro de otra y que no queremos que sean utilizadas en otro lugar.


func chooseStepFunction(backward: Bool) -> (Int) -> Int {
    func stepForward(_ input: Int) -> Int {
        return input + 1
    }

    func stepBackward(_ input: Int) -> Int {
        return input - 1
    }
    return backward ? stepBackward : stepForward
}

var value = 7
let moveNearerZero = chooseStepFunction(backward: value > 0)
while value != 0 {
    print("\(value)...")
    value = moveNearerZero(value)
}
print("Cero!!")

De esta manera, las funciones anidadas no podrán ser invocadas de forma independiente, solo a través de la función que las contiene.

Muy potente este lenguaje y tenga un buen soporte para la programacion funcional me parece muy interesante.