Criando variáveis no Kotlin - Explorando a documentação
Tags: kotlin, braziliandevs, beginners, programming
Published: 2021-11-15 02:21:59

Pensando em formas diferentes de aproximar a comunidade da documentação do Kotlin, darei início a uma série de postagens para traduzir o conteúdo dessa documentação. Fiquem a vontade para compartilhar seus feedbacks e complementar o conteúdo.

De qualquer forma, ainda que você já esteja trabalhando com kotlin, aconselho a consultar a documentação sempre que puder. Muitas das vezes, existem recursos da linguagem que facilitam nosso dia a dia, mas por costume de outras linguagens de programação com as quais já trabalhamos, temos a tendência de estruturar o código da forma como conhecemos até então.

Vamos dar os primeiros passos?
![gif bruxa subindo em uma vassoura dizendo "e lá vamos nós"](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ex5bu69g7ledxr5tclmj.gif)

Se ainda não conhece a documentação, você pode consultar o conteúdo por [aqui](https://kotlinlang.org/docs/home.html). Ela está em inglês e não existe, até o momento, uma tradução oficial para outras línguas, como o português.

Dentro do tópico *[Basic Syntax](https://kotlinlang.org/docs/basic-syntax.html)*, que seria a Sintaxe Básica, estão os primeiros tópicos da linguagem. Vamos iniciar aqui pelas [variáveis](https://kotlinlang.org/docs/basic-syntax.html#variables).

#Variáveis
Variáveis são utilizadas para guardar valores durante a execução do nosso código. Esses valores podem ser apenas de leitura, ou seja, não podemos alterá-lo durante a execução do programa. Mas também podem ser mutáveis, ou seja, podem mudar de valor durante o processamento e de acordo com a necessidade.

No Kotlin, as variáveis de leitura, as chamadas *read-only* em inglês, são definidas no código quando utilizamos a palavra-chave **val**.

Para variáveis que podem ter seu valor alterado durante a execução de um programa, utilizamos a palavra-chave **var** para sua criação no código.

Para facilitar, você pode associar a origem das palavras-chaves:
* **val**: *value*;
* **var**: *variable*.

Vejamos os exemplos a seguir.

##Variáveis somente leitura
###Uma variável pode ter seu tipo declarado e receber uma atribuição durante a sua criação:
No trecho de código abaixo, estamos criando uma variável apenas de leitura chamada "a". Seu tipo é Int, ou seja, ela recebe valores que são números inteiros. E foi declarada com o valor 1.
{% kotlin https://pl.kotl.in/e53Je697Aq?from=2&to=3&readOnly=false %}
###Uma variável pode ter seu tipo não declarado e receber uma atribuição durante a sua criação:
Quando atribuímos um valor diretamente a uma variável, o Kotlin entende qual será o seu tipo. No caso abaixo, o tipo é Int, pois recebeu o valor 1, que é um número inteiro.
{% kotlin https://pl.kotl.in/3zXo0Rau2?from=2&to=3&readOnly=false %}
###Uma variável pode ter seu tipo declarado e não receber uma atribuição durante a sua criação:
No caso abaixo, a variável foi criada e, só durante a execução do programa, ela receberá um valor. Não necessariamente precisa ter uma atribuição diretamente em sua criação.
{% kotlin https://pl.kotl.in/KjTUxNuiC?from=2&to=3&readOnly=false %}
###Uma variável de leitura não poderá ter seu valor alterado:
No caso abaixo, se você executar o código, verá que retornará um erro dizendo *Val cannot be reassigned*, ou seja, a variável declarada como somente leitura não poderá ter um novo valor atribuído.
{% kotlin https://pl.kotl.in/BKUI0ABeA?readOnly=false %}

##Variáveis mutáveis
###Uma variável pode ter seu tipo declarado e receber uma atribuição durante a sua criação:
No trecho de código abaixo, estamos criando uma variável mutável chamada "a". Seu tipo é Int, ou seja, ela recebe valores que são números inteiros. E foi inicializada com o valor 1. Posteriormente, teve seu valor alterado para 2, pois é var.
{% kotlin https://pl.kotl.in/6wTZ10Mab?readOnly=false %}
###Uma variável pode ter seu tipo não declarado e receber uma atribuição durante a sua criação:
Quando atribuímos um valor diretamente a uma variável, o Kotlin entende qual será o seu tipo. No caso abaixo, o tipo é Int, pois recebeu o valor 1, que é um número inteiro. E, por ser var, teve seu valor alterado para 2 sem problemas.
{% kotlin https://pl.kotl.in/9hAwY5Gk-P?readOnly=false %}
###Uma variável pode ter seu tipo declarado e não receber uma atribuição durante a sua criação:
No caso abaixo, a variável foi criada e, só durante a execução do programa, ela receberá um valor. Não necessariamente precisa ter uma atribuição diretamente em sua criação.
{% kotlin https://pl.kotl.in/vI0uFRfTz?readOnly=false %}

##Mundo real
Precisamos avaliar e entender um contexto para tomar uma decisão entre deixar uma variável como mutável ou como somente leitura. Tudo depende da necessidade e dos requisitos que estamos atendendo, além de pontos de controle e de segurança que podem ser importantes em nosso código.
Normalmente, uma variável é criada como **val**, impedindo alterações diretas de seu valor. E, se houver necessidade, alteramos para **var** durante o desenvolvimento de um projeto.
Contudo, além disso, também avaliamos a necessidade de uma variável ser:
* uma constante;
* local, que atenda apenas a um escopo;
* global, que esteja disponível a todo o projeto;
* uma propriedade, controlando de acordo com o modificador de acesso.

Pontos extremamente importantes e que abordaremos no próximo artigo.

Caso tenha algo a acrescentar, sugestões ou queira tirar alguma dúvida, fique a vontade para enviar nos comentários. Até a próxima!