En este tutorial aprenderás a como proveer argumentos por defecto o especificar sus nombres en la llamada de una función.
Argumentos Por Defecto
Para declarar una función con valores por defecto en sus parámetros, usa el operador =
en la declaración.
Por ejemplo
Supón que tenemos un arreglo con los nombres de unos clientes y deseamos crear una función que retorne un elemento de acuerdo al índice.
Además de ello, deseamos que retorne el ítem de la posición cero, si el argumento no es proveído.
En el siguiente código ilustramos el caso:
val customers = arrayOf("Carlos", "Miguel", "Ximena")
fun loadCustomer(limit: Int = 0): String {
return customers[limit]
}
fun main() {
println("Cliente:${loadCustomer()}")
}
Como ves, al asignar el parámetro con un valor en su declaración, tienes la posibilidad de omitir el valor del argumento en la llamada de loadCustomer()
.
El resultado sería:
Cliente:Carlos
Modifiquemos el ejemplo para explorar otra situación.
Añade un parámetro a la función de tipo Int
, llamado length
, para que determine la cantidad de caracteres a mostrar del nombre del cliente.
fun loadCustomer(limit: Int = 0, length: Int): String {
return customers[limit].take(length)
}
Si intentas llamar a la función loadCustomer()
, pasando tan solo el argumento para length
, obtendrás un error de compilación.
No value passed for parameter 'length'
Esto se debe a que existe una correlación de cada parámetro, con el orden de sus argumentos al momento de compilarlos.
Y aunque pareciera que fuera opcional, el parámetro limit
está siendo pedido para conservar dicho orden.
La siguiente sección nos provee la solución.
Argumentos Nombrados
Es posible especificar el nombre de los argumentos que deseas usar en la llamada de tu función.
Para ello usa la sintaxis de argumentos nombrados: nombreParametro = valorArgumento
.
Por ejemplo
Resolvamos el problema de la sección anterior.
Llama a loadCustomer()
pasando solo el valor de length
con la sintaxis para argumentos nombrados:
fun loadCustomer(limit: Int = 0, length: Int): String {
return customers[limit].take(length)
}
fun main() {
println("Cliente:${loadCustomer(length = 3)}")
}
Con esta solución, el compilador es capaz de obtener el valor predeterminado de limit
e incorporar el argumento del segundo parámetro.
Al ejecutar la aplicación el resultado serían los 3 primeros caracteres del cliente en la posición por defecto 0
.
Cliente:Car
Esto aumenta la flexibilidad del uso de la función al usar los parámetros estrictamente necesarios en una situación.
¿Qué Sigue?
En este tutorial viste cómo crear funciones con argumentos por defecto y nombrados. En la siguiente sección aprenderás a usar funciones con argumentos variables.