Resumen
Una función puede recibir parámetros pero no retornar nada:
func greet2(person: String) {
print("Hola \(person)")
}
greet2(person: "Hernan")
Otro ejemplo:
func printAndCount(string: String) -> Int {
print(string)
return string.count
}
func printWithoutCounting(string: String) {
let _ = printAndCount(string: string)
}
printAndCount(string: "Hola que tal")
printWithoutCounting(string: "Hola que tal")
Ejemplo de una función que recibe un array
y devuelve una tupla
:
func minMax(array:[Int]) -> (min: Int, max: Int) {
if array.isEmpty { return nil }
var currentMin = array[0]
var currentMax = array[0]
for value in array[1..<array.count] {
if value < currentMin {
currentMin = value
} else if value > currentMax {
currentMax = value
}
}
return (currentMin, currentMax)
}
let bounds = minMax(array: [6, 4, 3, 1, 6, 5, 4, 7, 9])
print("El valor minimo es \(bounds.min) y el valor maximo es \(bounds.max)")
Si le pasamos un array
vacío, esta función va a fallar.
minMax(array: [])
Para resolver este problema, lo que se haces es convertir la salida en un tipo de dato Optional
agregando el símbolo ?
al final para validar si el parametro esta o no vacío:
func minMax(array:[Int]) -> (min: Int, max: Int)? {
if array.isEmpty { return nil }
. . .
}
y para imprimir el resultado, tenemos que hacer un force unwrapping
(no recomendado) o el optional unwrapping
:
Force Unwrapping
Agregamos el simbolo !
:
print("El valor minimo es \(bounds!.min) y el valor maximo es \(bounds!.max)")
Optional Unwrapping
Hacemos el uso de if let
:
if let bounds = minMax(array: [6, 4, 3, 1, 6, 5, 4, 7, 9]) {
print("El valor minimo es \(bounds.min) y el valor maximo es \(bounds.max)")
}
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?