Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Kotlin
Code

Kotlin a Partir do Princípio: Variáveis, Tipos Básicos e Matrizes

by
Difficulty:BeginnerLength:MediumLanguages:
This post is part of a series called Kotlin From Scratch.
Kotlin From Scratch: Nullability, Loops, and Conditions

Portuguese (Português) translation by Luis Drum (you can also view the original English article)

Kotlin é uma linguagem moderna de programação que é compilada em bytecode Java. É gratuita e de código aberto e promete fazer a codificação para o Android ainda mais divertida.

Kotlin é 100% interoperável com Java. Em outras palavras, ele pode ser usado junto com Java no mesmo projeto. Então você pode refatorar as partes do seu código Java para Kotlin e ele não quebrará. Além disso, é conciso, expressivo e possui ótimas ferramentas. Kotlin pode ser usado no back-end (do lado do servidor), mas está recebendo muita atenção agora como uma linguagem para desenvolvimento de aplicativos Android. Kotlin agora é suportado pela Google como uma linguagem de primeira classe para o desenvolvimento Android, então a popularidade de Kotlin está prestes a explodir!

Neste primeiro tutorial da série Kotlin a Partir do Princípio, você aprenderá sobre os fundamentos da linguagem: comentários, variáveis, tipos simples, matrizes e inferência de tipos.

Pré-requisitos

Para acompanhar-me, você precisará do Android Studio com plugin para o Kotlin. Alternativamente, você pode usar o online playground ou IntelliJ IDEA Community Edition.

1. Variáveis

Em Kotlin, use val para declarar uma constante ou a palavra-chave var  para declarar uma variável. Você pode especificar um tipo como String ou Int após o nome da variável. No exemplo abaixo, nós declaramos uma constante firstName do tipo String  com a palavra-chave val.

Mas você logo vai perceber que em Kotlin, geralmente é possível omitir o tipo de declaração e o compilador não vai reclamar.

No código acima, você vai observar que nós não declarar explicitamente o tipo String. O código acima ainda funcionará porque o compilador inferiu implicitamente o tipo usando a inferência de tipos. Nós vamos voltar a isso!

A diferença entre as palavras-chave val e var é que a primeira é imutável ou somente leitura (seu valor não pode ser alterado), enquanto a última é mutável (seu valor pode ser alterado).

Observe que para uma variável declarada com a palavra-chave var que tem seu tipo inferido pelo compilador, atribuir um valor de um tipo diferente, não funcionará. Em outras palavras, o valor da variável pode mudar, mas não seu tipo! Por exemplo:

É altamente recomendável que você comece fazendo suas variáveis imutáveis, declarando-as com a palavra-chave do val, para não manter muitos estados. Isso torna seu código mais seguro para multithreading, porque garante que suas variáveis não podem ser modificadas por outras threads inesperadamente.

Outra coisa que você deve saber sobre a palavra-chave val é que você pode declará-la com um tipo só e atribuir um valor mais tarde. Mas você ainda só pode atribuir um valor de cada vez.

Em Java, é possível declarar múltiplas variáveis do mesmo tipo em uma única linha, mas isso não funciona no Kotlin. Em Kotlin, todas as declarações de variável devem estar em suas próprias linhas.

2. Inferência de Tipos ou Dedução

Kotlin é uma linguagem fortemente tipada que oferece suporte a inferência de tipos ou dedução. Este é o mecanismo utilizado pelo compilador para descobrir os tipos do contexto. O Java não tem um mecanismo de inferência de tipos, o que significa que você deve declarar explicitamente o tipo de cada variável ou função. Inferência de tipos ajuda a reduzir o código clichê que você tem que escrever.

O código acima compilaria mesmo que nós não indicássemos explicitamente o tipo para a variável país. O compilador é suficientemente inteligente para saber que o país é do tipo String, porque o valor, "Nigéria", é uma sequência de caracteres.

3. Tipos Básicos

Em Java, temos dois tipos de tipo — primitivos (por exemplo, int, byte, boolean, long, char, etc.) e tipos de referência (por exemplo, array, String) . Java usa invólucros (como java.lang.Integer) para fazer tipos primitivos se comportarem como objetos. Mas em Kotlin, não existe tal distinção. Em vez disso, todos os tipos são objetos.

Números

Os tipos inteiros disponíveis em Kotlin são:

  • Long — 64 bits
  • Int — 32 bits
  • Short — 16 bits
  • Byte — 8 bits

Os tipos de ponto flutuante são:

  • Double-64 bits
  • Float – 32 bits

Você pode observar que nós criamos um Long literal, adicionando o sufixo L, e para o Float, acrescentamos o sufixo F ou f. Os números também podem ser escritos em notação hexadecimal, usando os prefixos 0x  ou 0X  e em binário usando os prefixos 0b ou 0B. Observe que, em todos estes casos, o Kotlin pode usar inferência de tipos para saber o tipo que queremos em vez disso.

Para converter um número de um tipo para outro, você precisa chamar explicitamente a função de conversão correspondente. Em outras palavras, não há nenhuma conversão implícita entre tipos de números.

Cada tipo de número tem funções auxiliares que convertem de um tipo de número para outro: toByte(), toInt(), toLong(), toFloat(), toDouble(), toChar(), toShort().

No código acima, nós convertemos de um número inteiro para um long. Podemos também fazer o inverso usando o método toInt() na variável long. Observe que isso truncará o valor para se ajustar ao tamanho menor de um tipo Int, se necessário - portanto, tenha cuidado ao converter de tipos maiores para menores!

Você também pode converter uma String em um tipo de número.

No código acima, convertemos a variável stringNumber em um tipo Int, chamando o método toInt() na variável. Podemos escrever isto de forma mais sucinta, em vez disso, chamando o método diretamente na sequência de caracteres:

O Tipo Booleano

O  tipo Boolean em Kotlin é o mesmo que em Java. Seu valor pode ser true ou false. As operações de disjunção(||), conjunção(&&) e negação(!) podem ser executadas em tipos booleanos, como em Java.

Strings

Strings podem ser criadas com aspas duplas ou aspas triplas. Além disso, os caracteres de escape podem ser usados com aspas duplas.

Para criar uma sequência de caracteres que abrange várias linhas no arquivo de origem, nós usamos aspas triplas:

Kotlin também oferece suporte a interpolação de strings ou de string templates. Esta é uma maneira mais fácil de construir strings dinâmicas do que a concatenação, que é o que usamos em Java. Usando string templates, podemos inserir variáveis e expressões em uma string.

No código acima, criamos uma string literal e, dentro dela, nos referimos a uma variável pelo uso de um caractere $ na frente do nome da variável. Observe que, se a variável não está correta ou não existe, o código não compila.

E se você precisar usar $ na sua string? Você simplesmente escapa com \$! Além disso, você pode chamar métodos de uma String interpolada diretamente; você tem que adicionar chaves ${} para envolvê-la.

Outra coisa legal que você pode fazer é executar alguma lógica dentro das chaves, ao criar uma String literal.

Matrizes

Em Kotlin, há duas maneiras principais para criar uma matriz: usando a função auxiliar arrayOf() ou o construtor Array().

A Função arrayOf()

Por exemplo, vamos criar uma matriz com alguns elementos usando arrayOf().

Agora, para acessar qualquer um dos elemento, podemos usar seu índice: myArray[2]. Observe que podemos passar valores de tipos diferentes para o arrayOf() como argumentos e ainda funcionará — será uma matriz de tipo misto.

Para forçar que todos os valores da matriz tenham o mesmo tipo, por exemplo Int, declaramos o tipo chamando arrayOf<Int>() ou intArrayOf().

Temos também outras funções utilitárias para criar matrizes de outros tipos, como charArrayOf(), booleanArrayOf(), longArrayOf(), shortArrayOf(), byteArrayOf() e assim por diante. Nos bastidores, usar essas funções irá criar uma matriz de seus respectivos tipos primitivos Java. Em outras palavras, intArrayOf() irá compilar para o tipo primitivo normal de Java int[], byteArrayOf() será byte[], longArrayOf() será long[], e assim por diante.

O Construtor Array()

Agora vamos ver como criar uma matriz com Array(). O construtor dessa classe requer um tamanho e uma função lambda. Vamos aprender mais sobre funções lambda mais tarde nesta série, mas por enquanto, apenas entenda que é uma maneira simples de declarar uma função anônima inline. Neste caso, o trabalho da função lambda é inicializar a matriz com os elementos.

No código acima, nós passamos 5 como o tamanho da matriz no primeiro argumento. O segundo argumento leva uma função lambda, que recebe o índice do elemento da matriz e retorna o valor a ser inserido no índice na matriz. Assim, no exemplo acima, criamos uma matriz com elementos 0, 2, 4, 6 e 8.

4. Comentários

Isso é fácil. Em Kotlin, os comentários são os mesmos que em Java. Podemos usar comentários de bloco ou linha:

Conclusão

Neste tutorial, você aprendeu os conceitos básicos da linguagem de programação Kotlin: variáveis, tipos básicos, inferência de tipos, matrizes e comentários. No próximo tutorial da série Kotlin a Partir do Princípio, você vai aprender sobre laços, intervalos, condições, coleções e pacotes em Kotlin. Te vejo em breve!

Para saber mais sobre a linguagem Kotlin, eu recomendo visitar a documentação Kotlin. Ou confira alguns dos nossos outros tutoriais de Kotlin aqui no Envato Tuts +.


Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.