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
   37   38   39   40   41   42   43   44   45   46   47