Escribir funciones claras y legibles es una de las grandes fortalezas de Swift. Dominar las etiquetas de argumento, los valores por defecto y los parámetros variádicos permite crear código que prácticamente se lee como un libro, reduciendo errores y mejorando la experiencia de desarrollo.
¿Cómo funcionan las etiquetas de argumento en Swift?
Cuando defines una función con parámetros, el nombre que eliges cumple dos roles: actúa como variable interna dentro del cuerpo de la función y como etiqueta externa al momento de invocarla. Si los nombres son largos, las llamadas se vuelven incómodas [0:42].
Para resolverlo, Swift permite agregar un alias o etiqueta delante del nombre del parámetro. Por ejemplo:
swift
func someFunction(f1 firstParamName: Int, f2 secondParamName: Int) {
print(firstParamName + secondParamName)
}
someFunction(f1: 5, f2: 1)
firstParamName y secondParamName siguen siendo las variables internas.
f1 y f2 son las etiquetas cortas que usas al llamar la función.
- El resultado es idéntico: 6, pero la llamada es mucho más compacta.
¿Por qué las etiquetas hacen que Swift se lea como un libro?
Un ejemplo muy ilustrativo es la función de saludo [2:10]. Supón que quieres saludar a una persona indicando su ciudad de origen:
swift
func greeting(_ person: String, from hometown: String) -> String {
return "Hola (person), un placer que nos visites desde (hometown)"
}
greeting("Juan Gabriel", from: "Mallorca")
- La etiqueta
from convierte la llamada en algo natural: greeting Juan Gabriel from Mallorca.
- El guion bajo (
_) elimina la etiqueta del primer parámetro, ya que es evidente que se trata de una persona.
- El resultado final se lee de forma fluida: "Saluda a Juan Gabriel de Mallorca" [3:30].
Esta legibilidad es una de las razones por las que Swift ganó tanta popularidad. Elegir bien las etiquetas marca la diferencia entre código confuso y código que cualquier persona puede entender.
¿Qué son los valores por defecto en los parámetros?
A veces necesitas que un parámetro tenga un valor predeterminado para no obligar al usuario a especificarlo siempre [4:20]. En Swift se logra asignando directamente el valor en la firma de la función:
swift
func someFunction(f1 firstParamName: Int, f2 secondParamName: Int = 6) {
print(firstParamName + secondParamName)
}
- Si llamas
someFunction(f1: 5), el segundo parámetro vale 6 por defecto y el resultado es 11.
- Si llamas
someFunction(f1: 5, f2: 1), sobrescribes el valor por defecto y el resultado es 6.
Esta técnica es muy útil para simplificar llamadas frecuentes sin perder flexibilidad.
¿Qué es un parámetro variádico y cuándo usarlo?
Cuando no sabes cuántos valores recibirá una función, necesitas un parámetro variádico (variadic en inglés). Se declara agregando tres puntos suspensivos (...) después del tipo de dato [5:30]. Swift interpreta ese parámetro como una colección de elementos.
El ejemplo clásico es la media aritmética:
swift
func mean(_ numbers: Double...) -> Double {
var total: Double = 0
for number in numbers {
total += number
}
return total / Double(numbers.count)
}
numbers.count devuelve la cantidad de elementos recibidos como un entero, que se convierte a Double para obtener el cociente decimal.
- Puedes llamarla con cualquier cantidad de argumentos [6:40]:
swift
mean(1, 2, 3, 4, 5) // 3.0
mean(1.5, 2.7) // 2.1
mean(3, 4.5, 18.75) // 8.75
El parámetro variádico acepta desde un solo valor hasta los que necesites, sin modificar la firma de la función.
¿Cómo practicar con la media geométrica?
Como ejercicio propuesto [7:20], puedes combinar las técnicas vistas para implementar la media geométrica: multiplica todos los valores recibidos y luego aplica la raíz enésima (raíz cuadrada si son dos números, raíz cúbica si son tres, y así sucesivamente). Es una excelente forma de reforzar parámetros variádicos junto con operaciones matemáticas en Swift.
Si ya implementaste la media aritmética, comparte tu solución de la media geométrica y compara ambos enfoques.