Page 42 - Revista 2018 ultima
P. 42
Revista de la Facultad de Ingeniería, Año 5, Número 1
Considerar también que el tipo de la variable se define luego de su declaración, esto e el tipo de la variable se define luego de su declaración, esto e el tipo de la variable se define luego de su declaración, esto
p p
porque se le da prioridad al nombre de las variables con el objetivo de mejorar la orque se le da prioridad al nombre de las variables con el objetivo de mejorar la orque se le da prioridad al nombre de las variables con el objetivo de mejorar la
legibilidad.
Adicionalmente vemos dos maneras de definir los tipos de datos, la primera dicionalmente vemos dos maneras de definir los tipos de datos, la primera dicionalmente vemos dos maneras de definir los tipos de datos, la primera
A A
colocándolo directamente como es el caso de mente como es el caso de String, y la otra agregándole un “?” al , y la otra agregándole un “?” al
f f final. Esto es porque el compilador hace un control estricto de la nulabilidad, inal. Esto es porque el compilador hace un control estricto de la nulabilidad, inal. Esto es porque el compilador hace un control estricto de la nulabilidad,
cuando agregamos el “?” le estamos diciendo que esta variable puede almacenar uando agregamos el “?” le estamos diciendo que esta variable puede almacenar uando agregamos el “?” le estamos diciendo que esta variable puede almacenar
c c
datos nulos, en el caso de que noatos nulos, en el caso de que no lo hagamos nos dará un error de compilación. En lo hagamos nos dará un error de compilación. En
d
nuestro caso si inicializamos un uestro caso si inicializamos un EstudianteKotlin con un nombre con valor con valor null la
n
aplicación no compilará.
L6: Aquí hacemos la declaración de la función : Aquí hacemos la declaración de la función main. Como podemos ver, a . Como podemos ver, a
diferencia de Java, se pueden declarar funciones fuera de una clase.pueden declarar funciones fuera de una clase.
L7-L8: En estás dos líneas se está creando una lista de : En estás dos líneas se está creando una lista de EstudianteKotlinEstudianteKotlin. Este
l l
lenguaje cuenta con una librería estándar para manejo de colecciones, de hecho, enguaje cuenta con una librería estándar para manejo de colecciones, de hecho, enguaje cuenta con una librería estándar para manejo de colecciones, de hecho,
t t tiene variantes para manejar colecciones inmutables o mutables. En este caso iene variantes para manejar colecciones inmutables o mutables. En este caso iene variantes para manejar colecciones inmutables o mutables. En este caso listOf
c c
crea una lista inmutable. Podemos observar que no se usa la palabra “rea una lista inmutable. Podemos observar que no se usa la palabra “rea una lista inmutable. Podemos observar que no se usa la palabra “new” para
instanciar objetos como en otros lenguajes. Otro punto importante es que en Kotlin ciar objetos como en otros lenguajes. Otro punto importante es que en Kotlin ciar objetos como en otros lenguajes. Otro punto importante es que en Kotlin
no es necesario definir el tipo de dato en asignaciones o retorno de funciones, esto o es necesario definir el tipo de dato en asignaciones o retorno de funciones, esto o es necesario definir el tipo de dato en asignaciones o retorno de funciones, esto
n n
pues el compilador hace uso de inferencia de tipos (typeinference) para ues el compilador hace uso de inferencia de tipos (typeinference) para ues el compilador hace uso de inferencia de tipos (typeinference) para
p p
determinarlo en tiempo de compilación; la variable “de compilación; la variable “estudiantes”estudiantes” es una List
i inmutable con elementos de tipo nmutable con elementos de tipo EstudianteKotlin; toda esa información se obtiene ; toda esa información se obtiene
en tiempo de compilación por cómo está declarado el método n tiempo de compilación por cómo está declarado el método listOflistOfde la librería
e
estándar.
L8: Inicializamos un objeto usando parámetros nombrados (namedparameters), esto usando parámetros nombrados (namedparameters), esto usando parámetros nombrados (namedparameters), esto
n n
nos permite llamar una función o constructor indicando los valores que toman los os permite llamar una función o constructor indicando los valores que toman los os permite llamar una función o constructor indicando los valores que toman los
a a
argumentos de manera explícita, la intención de esto es mejorar la legibilidad en rgumentos de manera explícita, la intención de esto es mejorar la legibilidad en rgumentos de manera explícita, la intención de esto es mejorar la legibilidad en
f
funciones que tienen muchos parámetros. Iunciones que tienen muchos parámetros. Incluso permite que se pasen los ncluso permite que se pasen los
argumentos en distinto orden al que han sido declarados en la firma del método. rgumentos en distinto orden al que han sido declarados en la firma del método. rgumentos en distinto orden al que han sido declarados en la firma del método.
a a
Por ejemplo, la sentencia de la figura 4 es totalmente válida.or ejemplo, la sentencia de la figura 4 es totalmente válida.
P
Figura 4. Ejemplo de constructor con namedparameters.igura 4. Ejemplo de constructor con namedparameters.
F
L9: Aquí usamos la función maxBymaxBy de la librería estándar de colecciones. El objetivo de la librería estándar de colecciones. El objetivo
de esta función es retornar el primer elemento que tenga el mayor valor según la e esta función es retornar el primer elemento que tenga el mayor valor según la e esta función es retornar el primer elemento que tenga el mayor valor según la
d d
función indicada, o nullsi no hay elementos. Considerar que la función es enviada no hay elementos. Considerar que la función es enviada no hay elementos. Considerar que la función es enviada
como una expresión lambda (Lambda Expressionomo una expresión lambda (Lambda Expression ), que no es otra cosa que una ), que no es otra cosa que una
c
11
función anónima que puede ser usada como valor. Esta estructura viene de la unción anónima que puede ser usada como valor. Esta estructura viene de la unción anónima que puede ser usada como valor. Esta estructura viene de la
f f
programación funcional y la podemos usar puesto rogramación funcional y la podemos usar puesto que Kotlin tiene la capacidad de que Kotlin tiene la capacidad de
p
c c
combinar programación funcional con programación orientada a objetos.ombinar programación funcional con programación orientada a objetos.ombinar programación funcional con programación orientada a objetos.
El parámetro it de nuestro ejemplo es el nombre por defecto que toma el parámetro de nuestro ejemplo es el nombre por defecto que toma el parámetro de nuestro ejemplo es el nombre por defecto que toma el parámetro
d d
de una expresión lambda que recibe un sólo parámetro, en este caso un e una expresión lambda que recibe un sólo parámetro, en este caso un e una expresión lambda que recibe un sólo parámetro, en este caso un
EstudianteKotlin.
11
http://www.baeldung.com/kotlin-lambdalambda-expressions
42