Si alguna vez has tenido problemas para recordar la diferencia entre parámetros y argumentos:
Es un parámetro cuando estás dentro de la definición.
Es un argumento cuando estás fuera de la definición.
La forma más fácil de recordar la diferencia entre los dos es asociar la palabra argumento con la palabra afuera.
Aquí hay una función simple que calcula el cuadrado de un entero. ¿Qué datos se pasarán? Solo el número que queremos al cuadrado.
fun square(number: Int): Int {
return number * number
}
Aquí, dentro de la definición de esta función, decimos que el número es un parámetro.
Ahora que hemos definido nuestra función, vamos a usarla. Pasaremos algunos datos a nuestra función cuando la llamemos.
val radius = 5
val area = Math.PI * square(radius)
Aquí, fuera de la definición de la función, decimos que el radius es un argumento de la función square ().
Una clase genérica es aquella que tiene varibles o funciones que no tienen un tipo determinado. Por ejemplo, aquí hay una clase Box muy simple que simplemente envuelve algún otro objeto.
class Box<T>(var item: T)
Aquí, dentro de la definición de la clase, decimos que T es un parámetro de tipo.
Usar esta clase es bastante fácil: simplemente invocamos a su constructor y pasamos los datos que queremos ajustar.
val box = Box <String> ("Hola")
Aquí, fuera de la definición de la clase Box, lo construimos con un argumento de tipo String.
De hecho, Kotlin hace una inferencia de tipo fantástica, por lo que ni siquiera tenemos que especificarlo explícitamente:
caja de val = caja ("Hola")
En este caso, todavía hay un argumento de tipo, y sigue siendo String. Simplemente está implícito en el tipo de argumento "Hola" que le estamoResumen