diegoRodicio

Está documentación está a túa disposición sin ningún custo económico. Sen embargo, para a súa elaboración dedico moito tempo e recursos, polo que agradecería unha colaboración co que consideres oportuno. Gracias.

Tipos de función

Cada función ten un tipo específico, o cal se compón do tipo dos parámetros e do tipo de devolución da función.

Así, a seguinte función:

func sumarDousEnteiros(_ a: Int, _ b: Int) -> Int {
  return a + b
}

O tipo destas dúas funcións é (Int, Int) -> Int. Isto pode lerse como:

«Unha función que ten dous parámetros, ambos de tipo Int, e que devolve un valor de tipo Int.»

Usando tipos de funcións #

É posible usar tipos de funcións do mesmo xeito que calquera outro tipo en Swift:

func sumarDousEnteiros(_ a: Int, _ b: Int) -> Int {
  return a + b
}

var funcionMatematica: (Int,Int)->Int = sumarDousEnteiros
print("Chamada á función sumarDousEnteiros a través da variable funcionMatematica. Resultado: \(funcionMatematica(2,3))")
//Imprime: Chamada á función sumarDousEnteiros a través da variable funcionMatematica. Resultado: 5

Tipos de función como valores de devolución #

Podes utilizar o tipo dunha función como o valor de devolución doutra función.

Para isto, escribes o tipo dunha función completo inmediatamente despois da frecha de devolución (->) da función que devolve:

func avanzar(_ input: Int) -> Int {
    return input + 1
}
func regresar(_ input: Int) -> Int {
    return input - 1
}

func elegirFuncionDeMovimiento(debeRegresar: Bool) -> (Int) -> Int {
    return debeRegresar ? regresar : avanzar
}

var valorActual = 3
let moverseHaciaCero = elegirFuncionDeMovimiento(debeRegresar: valorActual > 0)
// moverseHaciaCero ahora se refiere a la función regresar()
while valorActual != 0 {
    print("Valor actual: \(valorActual)...")
    valorActual = moverseHaciaCero(valorActual)
}
//Imprime:
//Valor actual: 3...
//Valor actual: 2...
//Valor actual: 1..."

Share Your Valuable Opinions