Crea y usa variables en Kotlin

1. Antes de comenzar

En las apps que usas en tu teléfono, podrás observar que algunas partes de la app permanecen iguales, mientras que otras cambian (o son variables).

Por ejemplo, los nombres de las categorías de la app de Configuración no cambian: Internet y redes, Dispositivos conectados, Apps y mucho más.

En esta captura de pantalla de la app de Configuración, se muestran diferentes opciones de menú para cambiar la configuración del dispositivo. Los elementos de menú que se muestran en la pantalla son Internet y redes, Dispositivos conectados, Apps, Notificaciones, Batería, Almacenamiento, Sonido y vibración, y Pantalla.

Por otro lado, si miras una app de noticias, los artículos cambiarán con frecuencia. Cambian el nombre, la fuente, la hora de publicación y las imágenes del artículo.

¿Cómo debes escribir tu código para que el contenido cambie con el tiempo? No puedes volver a escribir el código en tu app cada vez que quieras publicar artículos nuevos, lo que sucede todos los días, cada una hora y cada minuto.

En este codelab, aprenderás a escribir código que usa variables para que ciertas partes del programa puedan cambiar sin tener que escribir un conjunto de instrucciones nuevo. Usarás Playground de Kotlin, como lo hiciste en el codelab anterior.

Qué compilarás

  • Programas cortos en Kotlin que usan variables

Qué aprenderás

  • Cómo definir una variable y actualizar su valor
  • Cómo seleccionar un tipo de datos apropiado para una variable entre los tipos de datos básicos en Kotlin
  • Cómo agregar comentarios al código

Requisitos

  • Una computadora con acceso a Internet y un navegador web

2. Tipos de datos y variables

En la programación informática, existe el concepto de variable, que es un contenedor para un único dato. Puedes visualizarla como una caja que contiene un valor. Esa caja tiene una etiqueta, que es el nombre de la variable. Si te refieres a la caja por su nombre, tendrás acceso al valor que contiene.

Este diagrama muestra cómo una variable puede contener datos, de la misma manera que una caja puede contener algo. Aquí, hay una caja que dice "nombre". Fuera de la caja, hay una etiqueta que dice "valor". Se muestra una flecha que apunta del valor a la caja, lo que significa que el valor está dentro de la caja.

¿Por qué almacenar el valor en una caja y hacer referencia a ella por su nombre cuando puedes usarlo directamente? El problema es que cuando tu código usa valores directamente en todas las instrucciones, el programa solo funcionará para ese caso específico.

Es una analogía que puede facilitar la comprensión de por qué son útiles las variables. A continuación, se incluye una carta para alguien que conociste recientemente.

Hola, Lauren:

Fue muy bueno verte hoy en la oficina. Espero verte el viernes.

¡Que tengas un lindo día!

Esta carta es genial, pero solo funciona para esa situación específica con Lauren. ¿Qué pasaría si tuvieras que escribir la misma carta muchas veces, pero con pequeñas variaciones para distintas personas? Sería más eficiente crear una sola plantilla de carta y dejar los espacios en blanco para las partes que pueden cambiar.

Hola, ____ :

Fue muy bueno verte hoy en _____. Espero verte el ____ .

¡Que tengas un lindo día!

También puedes especificar el tipo de información que aparece en cada espacio en blanco. De esta manera, te aseguras de que la plantilla de la carta se usará como esperabas.

Hola, { nombre } :

Fue muy bueno verte hoy en { ubicación } . Espero verte el { fecha } .

¡Que tengas un lindo día!

Conceptualmente, compilar una app es similar. Tienes marcadores de posición para algunos datos, mientras que otras partes de la app permanecen iguales.

En esta ilustración, se muestra un ejemplo de la app de Google Noticias. El contenido de la pantalla comienza con un mensaje de bienvenida en el que el nombre se deja como marcador de posición del nombre real del usuario. Luego, hay un texto que dice "Noticias más recientes para ti". Este texto no cambia independientemente de los artículos cargados en la app. También hay filas para cada artículo nuevo, en el que hay un marcador de posición para la imagen, el nombre, la fecha y la fuente del artículo. En la parte inferior de la lista de artículos, hay un botón con el mensaje "Ver más artículos".

En la ilustración anterior de una app de noticias, el texto "Te damos la bienvenida", el encabezado "Noticias más recientes para ti" y el texto del botón "Ver más artículos" siempre se mantienen iguales. En cambio, el nombre del usuario y el contenido de cada artículo cambiarán, por lo que sería una gran oportunidad para usar variables que contengan cada dato.

Esta ilustración muestra 3 cajas en fila, una al lado de la otra. La primera caja se llama "nombre". Al lado, hay una etiqueta que dice "Alex". Hay una flecha que va desde "Alex" hasta la caja, lo que significa que el valor "Alex" se almacena en la caja llamada "nombre". La segunda caja se llama "artículo1Nombre". Junto a ella, hay una etiqueta que dice "Nueva película que se estrenará". Hay una flecha desde la string hasta la segunda caja. Esto significa que el valor "Nueva película que se estrenará" se almacena en la caja llamada "artículo1Nombre". La tercera caja se llama "artículo1Fecha". Junto a ella, hay una etiqueta que dice "9 de junio". Hay una flecha desde "9 de junio" hasta la tercera caja. Esto significa que el valor "9 de junio" se almacena en la caja llamada "artículo1Fecha".

No es recomendable que escribas el código (o las instrucciones) en tu app de noticias solo para un usuario llamado Alex o un artículo de noticias que siempre tenga el mismo título y la misma fecha de publicación. En cambio, necesitas una app más flexible, por lo que deberías escribir tu código haciendo referencia a nombres de variables como name, article1Name, article1Date, etc. Entonces, tu código será lo suficientemente general como para funcionar para muchos casos de uso diferentes en los que el nombre del usuario y los detalles del artículo pueden ser distintos.

App de ejemplo con variables

Observemos un ejemplo de una app para ver dónde podría usar variables.

Esta captura de pantalla de la app de Google Maps muestra los detalles de la ubicación de Googleplex. Es un campus corporativo y se describe como la sede central global de Google. La ubicación tiene una calificación de 4.2 estrellas a partir de 9,831 opiniones. La dirección es 1600 Amphitheatre Pkwy, Mountain View, CA 94043. Esta pantalla permite al usuario guardar la ubicación en sus listas.

En una app de mapas, es posible que veas una pantalla con detalles de cada ubicación, como un restaurante o una empresa. La captura de pantalla anterior de la app de Google Maps muestra los detalles de la sede central de Google, que se denomina Googleplex. ¿Qué datos crees que se almacenan como variables en la app?

  • El nombre de la ubicación
  • La calificación por estrellas de la ubicación
  • La cantidad de opiniones de la ubicación
  • Si el usuario guardó (o agregó a favoritos) esta ubicación
  • La dirección de la ubicación
  • La descripción de la ubicación

Si cambias los datos que se almacenan en estas variables, tendrás una app de mapas lo suficientemente flexible como para mostrar los detalles de otras ubicaciones.

Tipos de datos

Cuando decidas qué aspectos de tu app pueden ser variables, es importante que especifiques qué tipo de datos se pueden almacenar en esas variables. En Kotlin, existen algunos tipos de datos básicos comunes. En la siguiente tabla, se muestra un tipo de datos diferente en cada fila. Para cada tipo de datos, se incluye una descripción del tipo de datos que puede contener y valores de ejemplo.

Tipo de datos de Kotlin

Qué tipo de datos puede contener

Ejemplos de valores literales

String

Texto

"Add contact"
"Search"
"Sign in"

Int

Número entero

32
1293490
-59281

Double

Número decimal

2.0
501.0292
-31723.99999

Float

Número decimal (que es menos preciso que un Double). Tiene un f o F al final del número.

5.0f
-1630.209f
1.2940278F

Boolean

true o false. Usa este tipo de datos cuando solo haya dos valores posibles. Ten en cuenta que true y false son palabras clave en Kotlin.

true
false

Ahora que conoces algunos tipos de datos de Kotlin comunes, ¿qué tipo de datos sería el adecuado para cada una de las variables identificadas en la página de detalles de la ubicación que viste antes?

Esta captura de pantalla de la app de Google Maps muestra los detalles de la ubicación de Googleplex. Es un campus corporativo y se describe como la sede central global de Google. La ubicación tiene una calificación de 4.2 estrellas a partir de 9,831 opiniones. La dirección es 1600 Amphitheatre Pkwy, Mountain View, CA 94043. Esta pantalla permite al usuario guardar la ubicación en sus listas.

  • El nombre de la ubicación es texto, por lo que se puede almacenar en una variable cuyo tipo de datos es String.
  • La calificación por estrellas de la ubicación es un número decimal (como 4.2 estrellas), por lo que se puede almacenar como Double.
  • La cantidad de opiniones de la ubicación es un número entero, por lo que debe almacenarse como Int.
  • Si el usuario guardó esta ubicación solo tiene dos valores posibles (guardada o no guardada), por lo que se almacena como Boolean, donde true y false pueden representar cada uno de esos estados.
  • La dirección de la ubicación es texto, por lo que debe ser String.
  • La descripción de la ubicación también es texto, por lo que debe ser String

A continuación, puedes practicar en dos situaciones más. Identifica el uso de las variables y sus tipos de datos en las siguientes apps.

  1. En una app para mirar videos, como la app de YouTube, hay una pantalla de detalles del video. ¿Dónde es probable que se usen las variables? ¿Cuál es el tipo de datos de esas variables?

En esta captura de pantalla, se muestra un video que se reproduce en la app de YouTube. El nombre de este video es "Android Developers has reached 1M subscribers!" (Desarrolladores de Android llegó al millón de suscriptores). Se publicó en el canal de YouTube para desarrolladores de Android. El video tiene 6,900 vistas y 541 "Me gusta" con 68 comentarios.

No hay una sola respuesta correcta, pero en una app de reproducción de video, se pueden usar variables para los siguientes datos:

  • Nombre del video (String)
  • Nombre del canal (String)
  • Cantidad de vistas del video (Int)
  • Cantidad de "me gusta" en el video (Int)
  • Cantidad de comentarios publicados en el video (Int)
  1. En una app de correo electrónico como Gmail, la pantalla de Recibidos indica los mensajes de correo electrónico más recientes. ¿Dónde es probable que se usen las variables? ¿Cuál es el tipo de datos de esas variables?

Esta captura de pantalla de la app de Gmail muestra la lista de mensajes en la carpeta Recibidos de un usuario. Hay un mensaje en la carpeta Recibidos de la remitente Mary Joe. El asunto del correo electrónico es "This weekend" (Este fin de semana). Hay una opción para destacar el correo electrónico.

Una vez más, no hay una sola respuesta correcta. En una app de correo electrónico, las variables se pueden usar para los siguientes datos:

  • Nombre del remitente (String)
  • Asunto del correo electrónico (String)
  • Si el correo electrónico está destacado (Boolean)
  • Cantidad de correos electrónicos nuevos en Recibidos (Int)

Pruébalo

  1. Abre tu app favorita en el teléfono.
  2. Identifica dónde crees que se usan las variables en la app, en esa pantalla en particular.
  3. Adivina qué tipo de datos son esas variables.
  4. Comparte tus respuestas en las redes sociales con una captura de pantalla de la app, una explicación de dónde crees que se usan las variables y el hashtag #AndroidBasics.

Hasta ahora, hiciste un gran trabajo en este codelab. Pasa a la siguiente sección para obtener más información sobre cómo se utilizan las variables y los tipos de datos en tu código.

3. Define y usa variables

Comparación entre definir y usar una variable

Para poder usar una variable en tu código, primero debes definirla. Esto es similar a lo que aprendiste en el codelab anterior sobre cómo definir funciones antes de llamarlas.

Cuando defines una variable, le asignas un nombre para identificarla de manera única. También debes decidir qué tipo de datos puede contener mediante la especificación del tipo de datos. Por último, puedes proporcionar un valor inicial que se almacenará en la variable, pero es opcional.

Cuando definas una variable, podrás usarla en el programa. Para usar una variable, escribe el nombre de la variable en tu código, lo que le indica al compilador de Kotlin que deseas usar el valor de la variable en ese punto del código.

Por ejemplo, define una variable para la cantidad de mensajes no leídos en la carpeta Recibidos de un usuario. La variable puede tener el nombre count. Almacena un valor, como el número 2 dentro de la variable, que represente 2 mensajes no leídos en la bandeja Recibidos del usuario. (Puedes elegir un número diferente para almacenar en la variable, pero a los efectos de este ejemplo, usa el número 2).

Hay una caja que dice "conteo". Fuera de la caja, hay una etiqueta que dice "2". Se muestra una flecha que apunta del valor a la caja, lo que significa que el valor está dentro de la caja.

Cada vez que tu código necesite acceder a la cantidad de mensajes no leídos, escribe count. Cuando ejecutas tus instrucciones, el compilador de Kotlin ve el nombre de la variable en tu código y usa el valor de la variable en su lugar.

Técnicamente, existen palabras de vocabulario más específicas para describir este proceso:

Una expresión es una unidad de código pequeña que tiene un valor. Puede consistir en variables, llamadas a funciones y mucho más. En el siguiente caso, la expresión se compone de una variable: la variable count. El valor de la expresión es 2.

En este diagrama, se muestra una expresión junto a su valor. Hay una etiqueta de expresión y debajo, dice: count. A la derecha de este, hay una etiqueta de valor y debajo, dice: 2.

Evaluar significa determinar el valor de una expresión. En este caso, la expresión se evalúa como 2. El compilador evalúa expresiones en el código y usa esos valores cuando ejecuta las instrucciones en el programa.

El diagrama está destinado a mostrar que el recuento de expresiones se evalúa como 2.  El nombre de la variable de recuento (count) aparece junto a su valor 2. La variable de recuento está rodeada en un círculo, y hay una flecha que apunta desde la variable de recuento hasta el valor 2. La flecha tiene la etiqueta "evalúa a".

Para observar este comportamiento en el Playground de Kotlin, ejecuta el programa en la siguiente sección.

Ejemplo

  1. Abre el Playground de Kotlin en un navegador web.
  2. Reemplaza el código existente en el Playground de Kotlin con el siguiente programa.

Este programa crea una variable llamada count con un valor inicial de 2 y la usa para imprimir el valor de la variable count en el resultado. No te preocupes si aún no comprendes todos los aspectos de la sintaxis del código. Se explicarán con más detalle en las próximas secciones.

fun main() {
    val count: Int = 2
    println(count)
}
  1. Ejecuta el programa. Debería mostrar el siguiente resultado:
2

Declaración de variable

En el programa que ejecutaste, la segunda línea del código indicará lo siguiente:

val count: Int = 2

Con esta declaración, se crea una variable de número entero llamada count que contiene el número 2.

Hay una caja que dice "conteo". Fuera de la caja, hay una etiqueta que dice "2". Se muestra una flecha que apunta del valor a la caja, lo que significa que el valor está dentro de la caja.

Es posible que tardes un poco en familiarizarte con la lectura de la sintaxis (o el formato) para declarar una variable en Kotlin. En el siguiente diagrama, se muestra dónde se debe ubicar cada detalle de la variable, así como la ubicación de los espacios y símbolos.

En este diagrama, se muestra la sintaxis para declarar una variable en Kotlin. La declaración de la variable comienza con la palabra "val" seguida de un espacio. A la derecha, hay un cuadro etiquetado como "nombre". A la derecha del cuadro de nombre, se encuentran los dos puntos. Después de los dos puntos, aparece un espacio y, luego, un cuadro etiquetado como "tipo de datos". A la derecha de eso, hay un espacio, el signo igual y otro espacio. A la derecha de ese cuadro, aparece un cuadro con el "valor inicial".

En el contexto de la variable count, puedes ver que la declaración de variables comienza con la palabra val. El nombre de la variable es count. El tipo de datos es Int y el valor inicial es 2.

Este diagrama muestra una línea de código que dice: val count: Int = 2. Hay flechas que apuntan a partes del código que explican su significado. Hay una etiqueta de nombre que apunta a la palabra "count" en el código. Hay una etiqueta de tipo de datos que apunta a la palabra Int en el código. Hay una etiqueta de valor inicial que apunta al número 2 en el código.

Cada parte de la declaración de variables se explica con más detalle a continuación.

Palabra clave para definir una variable nueva

Para definir una nueva variable, comienza con la palabra clave val de Kotlin (que significa valor). Luego, el compilador de Kotlin sabe que en esta declaración hay una declaración de variable.

Nombre de la variable

Del mismo modo en que nombras una función, también debes asignar un nombre a una variable. En la declaración de variables, el nombre de la variable sigue a la palabra clave val.

En este diagrama, se muestra la sintaxis para declarar una variable en Kotlin. La declaración de la variable comienza con la palabra "val" seguida de un espacio. A la derecha, hay un cuadro etiquetado como "nombre". Se destaca el cuadro de nombre con un borde verde y un fondo verde para llamar la atención hacia esa parte de la declaración de variables. A la derecha del cuadro de nombre, se encuentran los dos puntos. Después de los dos puntos, aparece un espacio y, luego, un cuadro etiquetado como "tipo de datos". A la derecha de eso, hay un espacio, el signo igual y otro espacio. A la derecha de ese cuadro, aparece un cuadro con el "valor inicial".

Puedes elegir el nombre de cualquier variable que desees, pero como práctica recomendada, evita usar palabras clave de Kotlin como nombre de variable.

Te recomendamos que elijas un nombre que describa los datos que contiene la variable para que sea más fácil de leer.

Los nombres de las variables deben seguir la convención de mayúsculas y minúsculas, como aprendiste con los nombres de las funciones. La primera palabra del nombre de variable se escribe en minúscula. Si el nombre contiene varias palabras, no se escriben espacios entre ellas y todas las demás palabras deben comenzar con mayúscula.

Ejemplos de nombres de variables:

  • numberOfEmails
  • cityName
  • bookPublicationDate

Para el ejemplo de código que se mostró antes, count es el nombre de la variable.

val count: Int = 2

Tipo de datos variable

Después del nombre de la variable, agrega dos puntos, un espacio y, luego, el tipo de datos de la variable. Como se mencionó anteriormente, String, Int, Double, Float, y Boolean son algunos de los tipos básicos de datos de Kotlin. Aprenderás más tipos de datos más adelante en este curso. Recuerda escribir los tipos de datos exactamente como se muestran y comenzar cada uno con una letra mayúscula.

En este diagrama, se muestra la sintaxis para declarar una variable en Kotlin. La declaración de la variable comienza con la palabra "val" seguida de un espacio. A la derecha, hay un cuadro etiquetado como "nombre". A la derecha del cuadro de nombre, se encuentran los dos puntos. Después de los dos puntos, aparece un espacio y, luego, un cuadro etiquetado como "tipo de datos". Se destaca el cuadro de tipo de datos con un borde verde y un fondo verde para llamar la atención hacia esa parte de la declaración de variables. A la derecha del cuadro de tipo de datos, hay un espacio, el signo igual y otro espacio. A la derecha de ese cuadro, aparece un cuadro con el "valor inicial".

En el ejemplo de la variable count, Int es el tipo de datos de la variable.

val count: Int = 2

Operador de asignación

En la declaración de variables, el signo igual (=) sigue al tipo de datos. El signo igual se denomina operador de asignación. El operador de asignación asigna un valor a la variable. En otras palabras, el valor del lado derecho del signo igual se almacena en la variable del lado izquierdo del signo igual.

En este diagrama, se muestra una línea de código que dice: val count: Int = 2. Hay una flecha que apunta desde el 2 (en el lado derecho del signo igual) hasta la palabra "count" (a la izquierda del signo igual). Esto muestra que el valor 2 se almacena en la variable de recuento.

Valor inicial variable

El valor de la variable son los datos reales que están almacenados en la variable.

En este diagrama, se muestra la sintaxis para declarar una variable en Kotlin. La declaración de la variable comienza con la palabra "val" seguida de un espacio. A la derecha, hay un cuadro etiquetado como "nombre". A la derecha del cuadro de nombre, se encuentran los dos puntos. Después de los dos puntos, aparece un espacio y, luego, un cuadro etiquetado como "tipo de datos". A la derecha del cuadro de tipo de datos, hay un espacio, el signo igual y otro espacio. A la derecha de ese cuadro, aparece un cuadro con el "valor inicial". Se destaca el cuadro de valor con un borde verde y un fondo verde para llamar la atención hacia esa parte de la declaración de variables.

Para el ejemplo de la variable count, el número 2 es el valor inicial de la variable.

val count: Int = 2

También puedes escuchar la frase: "la variable count se inicializó en 2". Esto significa que 2 es el primer valor almacenado en la variable cuando se declara la variable.

El valor inicial será diferente según el tipo de datos declarado para la variable.

Consulta la siguiente tabla. Tal vez la reconozcas de un momento anterior del codelab. La tercera columna muestra valores de ejemplo que se pueden almacenar en una variable de cada tipo correspondiente. Estos valores se denominan literales porque son valores fijos o constantes (el valor es siempre el mismo). Por ejemplo, el número entero 32 siempre tendrá el valor de 32. En cambio, una variable no es un valor literal porque su valor puede cambiar. Es posible que escuches nombrar a estos valores literales según su tipo: literal de string, literal de número entero, literal booleano, etc.

Tipo de datos de Kotlin

Qué tipo de datos puede contener

Ejemplos de valores literales

String

Texto

"Add contact"
"Search"
"Sign in"

Int

Número entero

32
1293490
-59281

Double

Número decimal

2.0
501.0292
-31723.99999

Float

Número decimal (que es menos preciso que un Double). Tiene un f o F al final del número.

5.0f
-1630.209f
1.2940278F

Boolean

true o false. Usa este tipo de datos cuando solo haya dos valores posibles. Ten en cuenta que true y false son palabras clave en Kotlin.

true
false

Es importante proporcionar un valor apropiado y válido según el tipo de datos de la variable. Por ejemplo, no puedes almacenar un literal de string como "Hello" dentro de una variable de tipo Int porque el compilador de Kotlin te mostrará un error.

Usa una variable

A continuación, se muestra el programa original que ejecutaste en el Playground de Kotlin. Hasta ahora, aprendiste que la segunda línea de código crea una nueva variable de número entero llamada count con un valor de 2.

fun main() {
    val count: Int = 2
    println(count)
}

Ahora, veamos la tercera línea de código. Imprime la variable count en el resultado:

println(count)

Observa la palabra count no está entre comillas. Es un nombre de variable, no un literal de string. (Si fuera un literal de string, la palabra aparecería entre comillas). Cuando ejecutas el programa, el compilador de Kotlin evalúa la expresión dentro de los paréntesis, que es count, para la instrucción println(). Dado que la expresión se evalúa como 2, se llama al método println() con 2 como la entrada: println(2).

Por lo tanto, el resultado del programa es el siguiente:

2

El número por sí solo en el resultado no es muy útil. Sería más útil tener un mensaje más detallado en el resultado para explicar lo que representa el 2.

Plantilla de strings

Un mensaje más útil para mostrar en el resultado es el siguiente:

You have 2 unread messages.

Sigue los pasos que aparecen a continuación para que el programa muestre un mensaje más útil.

  1. Actualiza tu programa en el Playground de Kotlin con el siguiente código. Para la llamada println(), pasa un literal de string que contenga el nombre de variable count. Recuerda encerrar el texto entre comillas. Ten en cuenta que esto no te brindará los resultados que esperas. Solucionarás el problema en un paso posterior.
fun main() {
    val count: Int = 2
    println("You have count unread messages.")
}
  1. Ejecuta el programa. Debería mostrarse el siguiente resultado:
You have count unread messages.

Esa oración no tiene sentido. Querrás que se muestre el valor de la variable count en el mensaje, no el nombre de la variable.

  1. Para corregir tu programa, agrega un signo de dólar $ antes de la variable count: "You have $count unread messages." Esta es una plantilla de strings porque contiene una expresión de plantillas, que en este caso es $count. Una expresión de plantilla es una expresión que se evalúa como un valor y que luego se sustituye en la string. En este caso, la expresión de plantilla $count se evalúa como 2, y el 2 se sustituye en la string en la que se encontró la expresión.
fun main() {
    val count: Int = 2
    println("You have $count unread messages.")
}
  1. Cuando ejecutas el programa, el resultado coincide con el objetivo deseado:
You have 2 unread messages.

Esa oración tiene mucho más sentido para el usuario.

  1. Ahora, cambia el valor inicial de la variable count a un literal de número entero diferente. Por ejemplo, puedes elegir el número 10. Deja el resto del código del programa sin modificar.
fun main() {
    val count: Int = 10
    println("You have $count unread messages.")
}
  1. Ejecuta el programa. Observa que el resultado cambia en consecuencia y que no necesitas cambiar la declaración println() en tu programa.
You have 10 unread messages.

Puedes ver qué tan útil puede ser una plantilla de strings. Solo escribiste la plantilla de strings una vez en tu código ("You have $count unread messages."). Si cambias el valor inicial de la variable count, la sentencia println() seguirá funcionando. Ahora, tu código es más flexible.

Para destacar este punto, compara los dos programas que aparecen a continuación. El primer programa usa un literal de string, con la cantidad exacta de mensajes no leídos directamente en la string. Este programa solo funciona cuando el usuario tiene 10 mensajes no leídos.

fun main() {
    println("You have 10 unread messages.")
}

Si usas una variable y una plantilla de strings en el segundo programa, tu código podrá adaptarse a más situaciones. Este segundo programa es más flexible.

fun main() {
    val count: Int = 10
    println("You have $count unread messages.")
}

Inferencia de tipo

A continuación, se muestra una sugerencia que te permite escribir menos código cuando declaras variables.

La inferencia de tipo es cuando el compilador de Kotlin puede inferir (o determinar) qué tipo de datos debe ser una variable, sin que el tipo se escriba de manera explícita en el código. Eso significa que puedes omitir el tipo de datos en una declaración de variable si proporcionas un valor inicial para ella. El compilador de Kotlin examina el tipo de datos del valor inicial y supone que quieres que la variable contenga datos de ese tipo.

A continuación, se muestra la sintaxis de una declaración de variable que usa inferencia de tipo:

En este diagrama, se muestra la sintaxis para declarar una variable en Kotlin mediante la inferencia de tipo. La declaración de la variable comienza con la palabra "val" seguida de un espacio. A la derecha, hay un cuadro con la etiqueta "nombre". A la derecha del cuadro de nombre, hay un espacio, el signo igual y, luego, otro espacio. A la derecha de ese cuadro, aparece un cuadro con el "valor inicial".

Volviendo al ejemplo de conteo, el programa contenía inicialmente esta línea de código:

val count: Int = 2

Sin embargo, esta línea de código también se puede escribir de la siguiente manera: Observa que se omiten el símbolo de dos puntos (:) y el tipo de datos Int. La sintaxis actualizada tiene menos palabras para escribir y logra el mismo resultado de la creación de una variable Int llamada count con un valor de 2.

val count = 2

El compilador de Kotlin sabe que deseas almacenar 2 (un número entero) en la variable count, de modo que pueda inferir que la variable count es del tipo Int. Es práctico, ¿no? Este es un ejemplo de cómo escribir código de Kotlin es más conciso.

Aunque en este ejemplo solo se analiza una variable de tipo Int, el concepto de inferencia de tipos se aplica a todos los tipos de datos en Kotlin.

Operaciones matemáticas básicas con números enteros

¿Cuál es la diferencia entre una variable Int con el valor 2 y una variable String con el valor "2"? Cuando ambos se imprimen en el resultado, se ven iguales.

La ventaja de almacenar números enteros como Int (en lugar de String) es que puedes realizar operaciones matemáticas con variables Int, como la suma, la resta, la división y la multiplicación (consulta otras operaciones). Por ejemplo, se pueden sumar dos variables de número entero para obtener el resultado. Hay casos en los que es razonable tener números enteros almacenados como strings, pero el propósito de esta sección es mostrarte qué puedes hacer con las variables Int.

  1. Regresa al Playground de Kotlin y quita todo el código del editor de código.
  2. Crea un programa nuevo en el que se defina una variable de número entero para la cantidad de correos electrónicos no leídos de la carpeta de Recibidos y, luego, inicialízalo en un valor como 5. Puedes elegir otro número si lo deseas. Define una segunda variable de número entero para la cantidad de correos electrónicos leídos en una carpeta de Recibidos. Inicialízalo a un valor como 100. Puedes elegir otro número si lo deseas. Luego, imprime la cantidad total de mensajes en Recibidos, suma los dos números enteros.
fun main() {
    val unreadCount = 5
    val readCount = 100
    println("You have ${unreadCount + readCount} total messages in your inbox.")
}
  1. Ejecuta el programa. Debería mostrar la cantidad total de mensajes en Recibidos:
You have 105 total messages in your inbox.

Para una plantilla de strings, aprendiste que puedes colocar el símbolo $ antes de un solo nombre de variable. Sin embargo, si tienes una expresión más compleja, debes encerrar la expresión entre llaves con el símbolo $ antes de las llaves: ${unreadCount + readCount}. La expresión dentro de las llaves, unreadCount + readCount, se evalúa como 105. Luego, se sustituye el valor 105 dentro del literal de string.

En este diagrama, se muestra una expresión junto a su valor. Se ve una etiqueta de expresión y debajo, ella, dice: unreadCount + readCount. A la derecha, hay una etiqueta de valor y, debajo, dice: 105.

  1. Para profundizar más este tema, crea variables con diferentes nombres y valores iniciales, y usa expresiones de plantillas para imprimir mensajes en el resultado.

Por ejemplo, modifica tu programa para imprimir lo siguiente:

100 photos
10 photos deleted
90 photos left

Esta es una forma de escribir el programa, aunque también hay otras formas correctas de escribirlo.

fun main() {
    val numberOfPhotos = 100
    val photosDeleted = 10
    println("$numberOfPhotos photos")
    println("$photosDeleted photos deleted")
    println("${numberOfPhotos - photosDeleted} photos left")
}

4. Actualiza variables

Cuando una app se ejecuta, es posible que sea necesario actualizar el valor de una variable. Por ejemplo, en una app de compras, a medida que el usuario agrega artículos al carrito, el total del carrito aumenta.

Simplificamos el caso de uso de esa compra en un programa simple. La lógica está escrita a continuación con lenguaje humano, no en Kotlin. Esta función se denomina pseudocódigo porque describe los puntos clave en los que se escribirá el código, pero no contiene todos los detalles del código.

En la función principal de un programa, haz lo siguiente:

  • Crea una variable de número entero cartTotal que comience en el valor 0.
  • El usuario agrega un suéter que cuesta USD 20 a su carrito de compras.
  • Actualiza la variable cartTotal a 20, que es el costo actual de los artículos de su carrito de compras.
  • Imprime el costo total de los artículos de su carrito, que es la variable cartTotal, en el resultado.

Para simplificar aún más el código, no es necesario que escribas el código cuando el usuario agrega artículos al carrito de compras. (Todavía no aprendiste cómo un programa puede responder a las entradas del usuario. Eso se abordará en una unidad posterior). Por lo tanto, enfócate en las partes en las que creas, actualizas y también imprimes la variable cartTotal.

  1. Reemplaza el código existente en el Playground de Kotlin con el programa que aparece a continuación. En la línea 2 del programa, inicializa la variable cartTotal en el valor 0. Ya que proporcionas un valor inicial, no es necesario especificar el tipo de datos Int debido a la inferencia de tipo. En la línea 3 del programa, intenta actualizar la variable cartTotal a 20 con el operador de asignación (=). En la línea 4 del programa, imprime la variable cartTotal con una plantilla de strings.
fun main() {
    val cartTotal = 0
    cartTotal = 20
    println("Total: $cartTotal")
}
  1. Ejecuta el programa. Se mostrará un error de compilación.
  2. Observa que el error indica que no se puede reasignar el val. El error se encuentra en la tercera línea del programa, la que intenta cambiar el valor decartTotal variable a 20.. val cartTotal no se puede reasignar a otro valor (20) después de que se le asigne un valor inicial (0).
Val cannot be reassigned

Si necesitas actualizar el valor de una variable, declara la variable con la palabra clave de Kotlin var, en lugar de val.

  • Palabra clave val: Úsala cuando esperes que el valor de la variable no cambie.
  • Palabra clave var: Úsala cuando esperes que el valor de la variable pueda cambiar.

Con val, la variable es de solo lectura, lo que significa que solo puedes leer el valor de la variable o acceder a él. Una vez que se establece el valor, no puedes editarlo ni modificarlo. Con var, la variable es mutable, lo que significa que el valor se puede cambiar o modificar. El valor se puede mutar.

Para recordar la diferencia, piensa en val como un valor fijo y en var como una variable. En Kotlin, se recomienda usar la palabra clave val en lugar de la palabra clave var cuando sea posible.

  1. Actualiza la declaración de variable de cartTotal en la línea 2 del programa a fin de usar var en lugar de val. El código debería verse así:
fun main() {
    var cartTotal = 0
    cartTotal = 20
    println("Total: $cartTotal")
}
  1. Observa la sintaxis del código en la línea 3 del programa que actualiza la variable.
cartTotal = 20

Usa el operador de asignación (=) para asignar un valor nuevo (20) a la variable existente (cartTotal). No necesitas utilizar la palabra clave var nuevamente porque la variable ya está definida.

En este diagrama, se muestra una línea de código que dice: cartTotal = 20. Hay una flecha que apunta del 20 (en el lado derecho del signo igual) a la palabra cartTotal (a la izquierda del signo igual). Esto muestra que el valor 20 se almacena en la variable cartTotal.

Con la analogía de la caja, imagina que el valor 20 se almacena en la caja etiquetada cartTotal.

Hay una caja que dice "cartTotal". Fuera de la caja, hay una etiqueta que dice "20". Se muestra una flecha que apunta del valor a la caja, lo que significa que el valor está dentro de la caja.

Aquí se muestra un diagrama de la sintaxis general para actualizar una variable, que ya se declaró en una línea de código anterior. Inicia la sentencia con el nombre de la variable que deseas actualizar. Agrega un espacio y el signo igual, seguido de otro espacio. Luego, escribe el valor actualizado de la variable.

En este diagrama, se muestra la sintaxis para actualizar una variable en Kotlin. La línea de código comienza con un cuadro con la etiqueta "nombre". A la derecha del cuadro de nombre, hay un espacio, el signo igual y, luego, otro espacio. A la derecha de ese cuadro, aparece un cuadro con la etiqueta "valor actualizado".

  1. Ejecuta el programa. El código debería compilarse correctamente. Se debería imprimir este resultado:
Total: 20
  1. Para ver cómo cambia el valor de la variable mientras se ejecuta el programa, imprime la variable cartTotal en el resultado después de declarar la variable inicialmente. Consulta los cambios en el código a continuación. La línea 3 tiene una declaración println() nueva. También se agrega una línea en blanco en la línea 4 del código. Las líneas en blanco no afectan la manera en que el compilador comprende el código. Agrega una línea en blanco donde sea más fácil leer tu código porque separa los bloques de código relacionados.
fun main() {
    var cartTotal = 0
    println("Total: $cartTotal")

    cartTotal = 20
    println("Total: $cartTotal")
}
  1. Vuelve a ejecutar el programa. El resultado debería ser el siguiente:
Total: 0
Total: 20

Podrás ver que, en un principio, el total del carrito de compras es de 0. Luego, se actualiza a 20. Actualizaste correctamente una variable. Esto fue posible porque cambiaste cartTotal de una variable de solo lectura (con val) a una variable mutable (con var).

Recuerda que solo debes usar var para declarar una variable si esperas que cambie el valor. De lo contrario, deberías usar val de forma predeterminada para declarar una variable. Esta práctica hace que tu código sea más seguro. El uso de val garantiza que las variables no se actualicen en tu programa si no esperas que lo hagan. Una vez que se asigna un valor a val, siempre se mantiene ese valor.

Operadores de incremento y disminución

Ahora, sabes que se debe declarar una variable como var para actualizar su valor. Aplica este conocimiento al ejemplo de mensaje de correo electrónico que debería aparecer a continuación.

  1. Reemplaza el código en el Playground de Kotlin con este código:
fun main() {
    val count: Int = 10
    println("You have $count unread messages.")
}
  1. Ejecuta el programa. Se debería imprimir lo siguiente:
You have 10 unread messages.
  1. Reemplaza la palabra clave val por la palabra clave var a fin de hacer que la variable count sea una variable mutable. No debería haber cambios en el resultado cuando ejecutes el programa.
fun main() {
    var count: Int = 10
    println("You have $count unread messages.")
}
  1. Sin embargo, ahora puedes actualizar count a un valor diferente. Por ejemplo, cuando llega un correo electrónico nuevo a la carpeta Recibidos del usuario, puedes aumentar count una vez. (No es necesario que escribas el código cuando llegue un correo electrónico. Obtener datos de Internet es un tema más avanzado que se detallará en una unidad posterior). Por ahora, enfócate en la variable count que aumenta a 1 con esta línea de código:
count = count + 1

La expresión a la derecha del signo igual es count + 1 y se evalúa como 11. Esto se debe a que el valor actual de count es 10 (que se encuentra en la línea 2 del programa) y 10 + 1 es igual a 11. Luego, con el operador de asignaciones, se asigna o se almacena el valor 11 en la variable count.

Este diagrama muestra una línea de código que dice: count = count + 1.
Hay un círculo alrededor de la expresión: count + 1. Hay una flecha que apunta desde la expresión en círculo (a la derecha del signo igual) hacia la palabra "count" (a la izquierda del signo igual). Esto muestra que el valor de la expresión de count + 1 se almacena en la variable count.

Agrega esta línea de código a tu programa en la parte inferior de la función main(). El código debería verse como este fragmento:

fun main() {
    var count = 10
    println("You have $count unread messages.")
    count = count + 1
}

Si ejecutas el programa ahora, el resultado será el mismo que antes porque no agregaste ningún código para usar la variable count después de actualizarla.

  1. Agrega otra sentencia de impresión que imprima la cantidad de mensajes no leídos después de que se haya actualizado la variable.
fun main() {
    var count = 10
    println("You have $count unread messages.")
    count = count + 1
    println("You have $count unread messages.")
}
  1. Ejecuta el programa. El segundo mensaje debería mostrar el valor count actualizado de 11 mensajes.
You have 10 unread messages.
You have 11 unread messages.
  1. En resumen, si deseas aumentar una variable en 1, puedes usar el operador de incremento (++), que se compone de dos símbolos de suma. Si usas estos símbolos inmediatamente después de un nombre de variable, le indicas al compilador que deseas agregar 1 al valor actual de la variable y, luego, almacenar el valor nuevo en la variable. Las dos líneas de código siguientes son equivalentes, pero el uso del operador de incremento ++ implica menos escritura.
count = count + 1
count++

Realiza esta modificación en tu código y, luego, ejecuta el programa. No debe haber espacios entre el nombre de la variable y el operador de incremento.

fun main() {
    var count = 10
    println("You have $count unread messages.")
    count++
    println("You have $count unread messages.")
}
  1. Ejecuta el programa. El resultado es el mismo, pero ahora aprendiste sobre un nuevo operador.
You have 10 unread messages.
You have 11 unread messages.
  1. Ahora, modifica la línea 4 de tu programa para usar el operador de disminución (--) después del nombre de la variable count. El operador de disminución está compuesto por dos símbolos menos. Cuando colocas el operador de disminución después del nombre de la variable, le indicas al compilador que deseas disminuir el valor de la variable en 1 y almacenar el valor nuevo en ella.
fun main() {
    var count = 10
    println("You have $count unread messages.")
    count--
    println("You have $count unread messages.")
}
  1. Ejecuta el programa. Se debería imprimir este resultado:
You have 10 unread messages.
You have 9 unread messages.

En esta sección, aprendiste a actualizar una variable mutable mediante el operador de incremento (++) y el operador de disminución (--). Más específicamente, count++ es igual a count = count + 1 y count-- es igual a count = count - 1.

5. Explora otros tipos de datos

Anteriormente en el codelab, aprendiste algunos tipos de datos básicos comunes: String, Int, Double y Boolean. Acabas de usar el tipo de datos Int, ahora explorarás otros tipos de datos.

Tipo de datos de Kotlin

Qué tipo de datos puede contener

String

Texto

Int

Número entero

Double

Número decimal

Boolean

true o false (solo dos valores posibles)

Prueba estos programas en el Playground de Kotlin para ver cuál es el resultado.

Double

Cuando necesites una variable con un valor decimal, usa una variable Double. Para obtener información sobre su rango válido, consulta esta tabla y observa las cifras decimales que puede almacenar, por ejemplo.

Imagina que estás navegando a un destino y tu viaje se divide en tres partes distintas porque debes hacer paradas durante el trayecto. Este programa muestra la distancia total que queda para llegar a tu destino.

  1. Ingresa este código en el Playground de Kotlin. ¿Puedes entender lo que sucede en cada línea de código?
fun main() {
    val trip1: Double = 3.20
    val trip2: Double = 4.10
    val trip3: Double = 1.72
    val totalTripLength: Double = 0.0
    println("$totalTripLength miles left to destination")
}

Se declaran tres variables, llamadas trip1, trip2 y trip3, para representar la distancia de cada parte del viaje. Todas son variables Double porque almacenan valores decimales. Usa val para declarar cada variable porque sus valores no cambian en el transcurso del programa. El programa también crea una cuarta variable llamada totalTripLength, que actualmente se inicializa en 0.0. En la última línea del programa, se imprime un mensaje con el valor de totalTripLength.

  1. Corrige el código para que la variable totalTripLength sea la suma de las tres duraciones de viaje.
val totalTripLength: Double = trip1 + trip2 + trip3

La expresión de la derecha del signo igual se evalúa como 9.02 porque 3.20 + 4.10 + 1.72 es igual a 9.02. El valor de 9.02 se almacena en la variable totalTripLength.

Este diagrama muestra una línea de código que dice: val totalTripLength: Double = trip1 + trip2 + trip3. Hay un círculo alrededor de la expresión: trip1 + trip2 + trip3. Hay una flecha que apunta desde la expresión en círculo (a la derecha del signo igual) hacia la palabra "totalTripLength" (a la izquierda del signo igual). Esto muestra que el valor de la expresión trip1 + trip2 + trip3 se almacena en la variable totalTripLength.

Todo tu programa debería verse como el siguiente código:

fun main() {
    val trip1: Double = 3.20
    val trip2: Double = 4.10
    val trip3: Double = 1.72
    val totalTripLength: Double = trip1 + trip2 + trip3
    println("$totalTripLength miles left to destination")
}
  1. Ejecuta el programa. Se debería imprimir lo siguiente:
9.02 miles left to destination
  1. Corrige tu código para quitar el tipo de datos Double innecesario de las declaraciones de variables debido a la inferencia de tipo. El compilador de Kotlin puede inferir que estas variables son tipos de datos Double según los números decimales proporcionados como valores iniciales.
fun main() {
    val trip1 = 3.20
    val trip2 = 4.10
    val trip3 = 1.72
    val totalTripLength = trip1 + trip2 + trip3
    println("$totalTripLength miles left to destination")
}
  1. Vuelve a ejecutar el código para asegurarte de que siga compilando. El resultado debería ser el mismo, pero ahora tu código es más simple.

String

Cuando necesites una variable que pueda almacenar texto, usa una variable String. Recuerda usar comillas alrededor de los valores literales de string, como "Hello Kotlin", mientras que los valores literales Int y Double no tienen comillas.

  1. Copia y pega este programa en el Playground de Kotlin.
fun main() {
    val nextMeeting = "Next meeting is:"
    val date = "January 1"
    val reminder = nextMeeting + date
    println(reminder)
}

Observa que hay dos variables String declaradas, una variable nextMeeting y una variable date. Luego, se declara una tercera variable String llamada reminder, que se establece igual a la variable nextMeeting más la variable date.

Con el símbolo +, puedes agregar dos strings juntas, que se llama concatenación. Las dos strings se combinan, una tras otra. El resultado de la expresión, nextMeeting + date, es "Next meeting is:January 1", como se muestra en el siguiente diagrama.

El diagrama muestra que la expresión nextMeeting + date se evalúa como "Next meeting is:January 1" (la próxima reunión es el 1 de enero).  La expresiónnextMeeting + date está encerrada en un círculo, y hay una flecha que apunta desde la expresión al valor "Next meeting is:January 1". La flecha tiene la etiqueta "evalúa a".

Luego, el valor "Next meeting is:January 1" se almacena en la variable reminder con el operador de asignación en la línea 4 del programa.

  1. Ejecuta el programa. Se debería imprimir lo siguiente:
Next meeting is:January 1

Cuando concatenas dos strings, no se agregan espacios entre ellas. Si quieres un espacio después de los dos puntos en la string resultante, debes agregar el espacio en una string o en la otra.

  1. Actualiza la variable nextMeeting para que tenga un espacio adicional al final de la string antes de las comillas. (De manera alternativa, podrías haber agregado un espacio adicional al principio de la variable date). Tu programa debería verse de la siguiente manera:
fun main() {
    val nextMeeting = "Next meeting is: "
    val date = "January 1"
    val reminder = nextMeeting + date
    println(reminder)
}
  1. Vuelve a ejecutar el programa. Ahora, debería haber un espacio después de los dos puntos en el mensaje de salida.
Next meeting is: January 1
  1. Modifica el código para concatenar (o agregar) otro fragmento de texto a la expresión que se almacena en la variable reminder.

Usa el símbolo + para agregar el literal de string "at work" al final de la string reminder.

  1. Ejecuta el programa.

Se debería imprimir este resultado:

Next meeting is: January 1 at work

En el siguiente código, te mostramos una forma de implementar el comportamiento.

fun main() {
    val nextMeeting = "Next meeting is: "
    val date = "January 1"
    val reminder = nextMeeting + date + " at work"
    println(reminder)
}

Observa que no hay comillas entre nextMeeting y date porque son nombres de variables de string existentes (donde sus respectivos valores son texto entre comillas). Por el contrario, el literal "at work" no se definió anteriormente en ninguna variable, por lo que debes poner ese texto entre comillas para que el compilador sepa que esta es una string que se debe concatenar en las otras strings.

En términos técnicos, puedes lograr el mismo resultado declarando una sola variable String con el texto completo en lugar de usar variables separadas. Sin embargo, el propósito de este ejercicio es demostrar cómo puedes declarar y manipular las variables String, especialmente cómo concatenar strings separadas.

  1. Cuando leas código que contenga strings, es posible que encuentres secuencias de escape. Las secuencias de escape son caracteres que van precedidos de un símbolo de barra invertida (\), que también se denomina barra invertida de escape.

Un ejemplo es ver \" dentro de un literal de string, como en el siguiente ejemplo. Copia y pega este código en el Playground de Kotlin.

fun main() {
    println("Say \"hello\"")
}

Ya aprendiste a usar comillas dobles alrededor de un literal de string. Pero, ¿qué sucede si deseas usar el signo " en tu string? Debes agregar el símbolo de barra inversa antes de las comillas dobles como \" dentro de tu string. Recuerda que debe haber comillas dobles alrededor de toda la string.

  1. Ejecuta el programa para ver el resultado. Debería mostrar lo siguiente:
Say "hello"

En el resultado, se muestran comillas alrededor de hello porque agregamos \" antes y después de hello en la sentencia println().

Para conocer otras secuencias de escape compatibles con Kotlin, consulta la página de documentación sobre secuencias de escape. Por ejemplo, si quieres agregar una nueva línea en tu string, usa el símbolo \ antes del carácter n, como en \n.

Ahora, aprendiste a concatenar strings y a escapar secuencias dentro de strings. Continúa con el último tipo de datos que abarca este codelab.

Booleano

El tipo de datos Boolean es útil cuando tu variable solo tiene dos valores posibles representados por true o false.

Un ejemplo es una variable que representa si el modo de avión de un dispositivo está activado o desactivado, o si las notificaciones de una app están habilitadas o inhabilitadas.

  1. Ingresa este código en el Playground de Kotlin. En la línea 2 de este programa, declara una variable Boolean llamada notificationsEnabled y, luego, inicialízala en true. En términos técnicos, puedes omitir : Boolean en la declaración, por lo que puedes quitarlo si lo deseas. En la línea 3 del programa, imprime el valor de la variable notificationsEnabled.
fun main() {
    val notificationsEnabled: Boolean = true
    println(notificationsEnabled)
}

Ejecuta el programa. Se debería imprimir lo siguiente:

true
  1. Cambia el valor inicial de Boolean a falso en la línea 2 del programa.
fun main() {
    val notificationsEnabled: Boolean = false
    println(notificationsEnabled)
}

Ejecuta el programa. Se debería imprimir lo siguiente:

false
  1. Se pueden concatenar otros tipos de datos a Strings. Por ejemplo, puedes concatenar Booleans en Strings. Usa el símbolo + para concatenar (o agregar) el valor de la variable booleana notificationsEnabled en el final de la string "Are notifications enabled? ".
fun main() {
    val notificationsEnabled: Boolean = false
    println("Are notifications enabled? " + notificationsEnabled)
}

Ejecuta el programa para ver el resultado de la concatenación. El programa debería imprimir el siguiente resultado:

Are notifications enabled? false

Puedes ver que es posible establecer la variable Boolean en un valor true o false. Las variables de Boolean te permiten codificar situaciones más interesantes en las que ejecutas algún conjunto de instrucciones cuando una variable de Boolean tiene un valor de true. Si Boolean tiene un valor falso, omite esas instrucciones. Obtendrás más información sobre Booleans en un codelab futuro.

6. Convenciones de codificación

En el codelab anterior, se presentó la guía de estilo de Kotlin para escribir código de Android de manera coherente según lo recomendado por Google y seguido por otros desarrolladores profesionales.

Estas son otras convenciones de formato y codificación que puedes seguir en función de los nuevos temas que aprendiste:

  • Los nombres de las variables deben seguir la convención de mayúsculas y minúsculas, y comenzar con una letra minúscula.
  • En una declaración de variable, debes especificar un espacio después de los dos puntos cuando se especifica el tipo de datos.

En este diagrama, se muestra una línea de código que dice: val discount: Double = .20. Hay una flecha que apunta al espacio entre el símbolo de dos puntos y el tipo de datos Double, con una etiqueta que dice "espacio".

  • Debe haber un espacio antes y después de un operador como la asignación (=), la suma (+), la resta (-), la multiplicación (*) la división (/) y muchos más.

Este diagrama muestra una línea de código que dice: var pet = "bird". Hay flechas que apuntan al espacio antes y después del signo igual, con una etiqueta que dice "espacio".

Este diagrama muestra una línea de código que dice: val sum = 1 + 2. Hay flechas que apuntan al espacio antes y después del símbolo más, con una etiqueta que dice "espacio".

  • A medida que escribes programas más complejos, se recomienda usar un límite de 100 caracteres por línea. De esta manera, te aseguras de poder leer todo el código de un programa fácilmente en la pantalla de la computadora, sin necesidad de desplazarse horizontalmente cuando leas código.

7. Comenta en tu código

Durante la codificación, otra práctica recomendada es agregar comentarios que describan para qué sirve el código. Los comentarios pueden ayudar a las personas que leen tu código a seguirlo con más facilidad. Dos símbolos de barra diagonal, o //, indican que el texto que sigue en el resto de la línea se considera un comentario, por lo que no se interpreta como código. Es común agregar un espacio después de los dos símbolos de barra diagonal.

// This is a comment.

Un comentario también puede comenzar en el medio de una línea de código. En este ejemplo, height = 1 es una instrucción de codificación normal. Todo lo que aparece después de // o Assume the height is 1 to start with, se interpreta como un comentario y no se considera parte del código.

height = 1 // Assume the height is 1 to start with.

Si quieres describir el código con más detalle junto con un comentario largo que supere los 100 caracteres en una línea, usa un comentario de varias líneas. Inicia el comentario de varias líneas con una barra diagonal (/) y un asterisco (*) como /*. Agrega un asterisco al principio de cada nueva línea del comentario. Por último, termina el comentario con un asterisco y un símbolo de barra diagonal */.

/*
 * This is a very long comment that can
 * take up multiple lines.
 */

Este programa contiene comentarios de una o varias líneas que describen lo que sucede:

/**
 * This program displays the number of messages
 * in the user's inbox.
 */
fun main() {
    // Create a variable for the number of unread messages.
    var count = 10
    println("You have $count unread messages.")

    // Decrease the number of messages by 1.
    count--
    println("You have $count unread messages.")
}

Como se mencionó anteriormente, puedes agregar líneas vacías en blanco a tu código para agrupar declaraciones relacionadas y facilitar la lectura del código.

  1. Agrega algunos comentarios a un fragmento de código anterior que hayas usado.
  2. Ejecuta el programa para asegurarte de que no haya cambiado el comportamiento porque los comentarios no deberían afectar el resultado.

8. Conclusión

¡Buen trabajo! Aprendiste sobre variables en Kotlin, por qué son útiles en programación y cómo crearlas, actualizarlas y usarlas. Experimentaste con diferentes tipos de datos básicos en Kotlin, incluidos los tipos de datos Int, Double, String y Boolean. También aprendiste sobre la diferencia entre las palabras clave val y var.

Todos estos conceptos son componentes fundamentales de tu recorrido para convertirte en desarrollador.

Nos vemos en el siguiente codelab.

Resumen

  • Una variable es un contenedor de un único dato.
  • Debes declarar una variable antes de usarla.
  • Usa la palabra clave val para definir una variable que sea de solo lectura, en la que el valor no puede cambiar una vez que se asigne.
  • Usa la palabra clave var a fin de definir una variable que sea mutable o modificable.
  • En Kotlin, se prefiere usar val en lugar de var cuando sea posible.
  • Para declarar una variable, comienza con la palabra clave val o var. Luego, especifica el nombre de la variable, el tipo de datos y el valor inicial. Por ejemplo: val count: Int = 2.
  • Con la inferencia de tipo, omite el tipo de datos en la declaración de variable si se proporciona un valor inicial.
  • Algunos tipos comunes de datos de Kotlin incluyen: Int, String, Boolean, Float y Double.
  • Usa el operador de asignación (=) para asignar un valor a una variable durante la declaración de la variable o cuando se actualiza la variable.
  • Solo puedes actualizar una variable que se haya declarado como variable mutable (con var).
  • Usa el operador de incremento (++) o el operador de disminución (--) para aumentar o disminuir el valor de una variable de número entero en 1, respectivamente.
  • Usa el símbolo + para concatenar strings. También puedes concatenar variables de otros tipos de datos, como Int y Boolean, a Strings.

Más información