Parámetros con nombre en Kotlin

Un parámetro es un valor que puede pasar a un método. Luego, el método puede usar el parámetro como si fuera una variable local inicializada con el valor de la variable que le pasó el método de llamada. Los parámetros de la función se definen usando notación Pascal – nombre: tipo. Los parámetros se separan mediante comas y cada parámetro debe escribirse explícitamente:

fun powerOf(number: Int, exponent: Int): Int { /*...*/ }

Ejemplo

Los parámetros con nombre en Kotlin nos permiten ser explícitos al nombrar argumentos cuando se pasan a una función. Esto tiene la ventaja de que, para funciones con muchos parámetros, la denominación explícita aclara la intención de cada argumento. Esto hace que el sitio de la llamada sea más legible. En el siguiente ejemplo, verificamos si la primera string contiene una substring de la segunda:

val string = "a kindness of ravens"
string.regionMatches(14, "Red Ravens", 4, 6, true)

Para usar parámetros con nombre, ponemos el nombre del parámetro antes del valor del argumento. Aquí está de nuevo la llamada a la función, esta vez con parámetros con nombre:

string.regionMatches(thisOffset = 14, other = "Red Ravens",
otherOffset = 4, length = 6, ignoreCase = true)

Este segundo ejemplo es más legible a costa de ser más detallado, pero ahora está claro para qué sirve cada uno de los parámetros. El valor booleano final, que podría haber adivinado que distingue entre mayúsculas y minúsculas, ahora es obvio. Si no tiene parámetros con nombre, debe consultar la documentación o el código fuente. Otro beneficio es que para funciones con múltiples parámetros del mismo tipo, hace que los errores sean menos probables ya que los valores se pueden asociar con el nombre. En el siguiente ejemplo, verá cómo la función acepta múltiples parámetros booleanos. Y sin parámetros con nombre, es fácil intercambiar argumentos erróneamente:

fun deleteFiles(filePattern: String, recursive: Boolean, ignoreCase:
Boolean, deleteDirectories: Boolean): Unit

Compare los dos estilos diferentes de llamar a esta función:

deleteFiles("*.jpg", true, true, false)
deleteFiles("*.jpg", recursive = true, ignoreCase = true,deleteDirectories = false)

¿Notaste que el primer parámetro no tiene nombre, incluso cuando los otros sí lo tienen? Al llamar a una función, no es necesario nombrar todos los parámetros. La regla es simple: una vez que se ha nombrado un parámetro, también se deben nombrar todos los parámetros siguientes. Los parámetros con nombre también permiten cambiar el orden de los parámetros para adaptarse a la persona que llama. Por ejemplo, los dos ejemplos siguientes son equivalentes:

val string = "a kindness of ravens"
string.endsWith(suffix = "ravens", ignoreCase = true)
string.endsWith(ignoreCase = true, suffix = "ravens")

Por qué esto es útil se demostrará en la siguiente sección sobre parámetros predeterminados. Cambiar el orden de los parámetros nos permite elegir selectivamente qué parámetros predeterminados anular. 

Conclusión

Los parámetros con nombre solo se pueden usar en funciones definidas por Kotlin y no en funciones definidas por Java. Esto se debe a que el código Java, cuando se compila en código de bytes, no siempre conserva los nombres de los parámetros.

Publicación traducida automáticamente

Artículo escrito por eralokyadav2019 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *