ThadeuCesario / Kotlin

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Kotlin

Aula 1

  • Temos senteças de códigos que podem ou não terminar com ponto e vírgula.
  • Sentenças ficam dentro de blocos, que podem ser blocos aninhados.
  • .kt é a extensão padrão de um arquivo Kotlin.

Aula 2

  • Temos comentários para KDoc.
  • Temos comentários simples de uma única linha.
  • Temos comentários em bloco.

Aula 3

O Kotlin é uma linguagem fortemente tipada.
Isso significa que, quando eu crio uma variável do tipo int, não posso atribuir depois para essa variável o tipo string.

Ficou mal acostumado pelo Javascript, né? haha

Como o Kotlin é uma linguagem fortemente tipada, precisamos ou inicializar ou inferir a variável.

Muito cuidado quando aplicar inferências, sempre prefira utilizar as variáveis com seu tipo declarado.

Aula 4

Constantes são definidas utilizando a palavra reservada val.

Aula 5

Uma das vantagens do Kotlin, é que podemos utilizar o Java normalmente. Portanto, podemos migrar código Java para Kotlin, de forma totalmente gradual.

Aula 6

Tipos numéricos
byte 1 byte
short 2 bytes
int 4 bytes
long 8 bytes

Lembrando que os tipos numéricos possuem um range que vão dos negativos aos positivos.

Aula 7

Tudo em Kotlin é objeto, inclusive os literais e tipos básicos.

Aula 8

Como criar funções.
1)
fun nomeFuncao(param: Tipo): TipoRetorno{}

2)
fun nomeFuncao(): TipoRetorno{}

3)
fun nomeFuncao(param: Tipo){}

Aula 9

Template String

Veja que assim como no Javascript, o Kotlin possui a possibilidade de realizarmos interpolação de variáveis utilizando o template string.

Aula 10

Lembrando que tudo em Kotlin é um objeto

Vamos para algumas considerações importantes. Como dissemos anteriormente, tudo em Kotlin é um objeto.

E podemos acessar os métodos através do literais, portanto o código abaixo é válido no kotlin.


fun main(args: Array) {
    val a: Int = 33.dec();
    var b: String = a.toString();

    println("Int: ${a}");
    println("Primeiro char da string b é: ${b.first()}");
}

Aula 11

Safe Call Operator

Muito semelhante ao java pode utilizar o interrogação para evitarmos acessar o atributo ou método de um objeto que esteja null.


fun main(args: Array) {
    var a: Int? = null; // Safe call operator
    println(a?.dec());
}

Aula 12

Operador Elvis

O operador Elvis nos ajuda a definir um valor default, caso o valor que estamos querendo atribuir seja inválido.

Veja o o código abaixo que tenho duas constantes.
Na primeira constante, o opcional é uma string com um safe call operator e é atribuído para essa constante o null.

Logo abaixo temos a constante obrigatorio, que também é uma string, e estamos atribuindo o valor da constante opcional.

Obviamente ocasionará um erro, pois a constante obrigatorio não possui um safe call operator, permitindo a atribuição de valores nulos.


fun main(args: Array) {
    val opcional: String? = null;
    val obrigatorio: String = opcional ?: "Valor Default";
}

Dessa forma utilizamos o operador elvis, que nos permitirá atribuir um valor default caso não consiga resolver para o primeiro valor, o valor default será atribuído.

Uma observação inútil 😂... O nome do operador foi criado justamente pela semelhança com o emoji do elvis.
Bem...pelo menos no Kotlin o Elvis não morreu mesmo.

Aula 13

Estrutura de controle

Um ponto interessente que temos no Kotlin e não tínhamos no Java, é que podemos utilizar um bloco de if e else, como uma expressão para atribuirmos um valor em uma variável ou constante.

Veja o exemplo do código abaixo


fun main(args: Array) {
    val num1: Int = 2;
    val num2: Int = 3;
val maiorValor = if(num1 > num2) {
    println("processando");
    num1;
} else {
    println("processando");
    num2;
}

println("O maior valor é ${maiorValor}!");

}

Apenas uma observação importante, é que obrigatoriamente a última setença do bloco deve ser o retorno do valor para aquela expressão.
Por isso temos:

num1; ao final do if, e num2; ao final do else.

Aula 14

Utilizando when

fun main(args: Array) {
    val nota = 10; //Utilizando inferência
when(nota){
    10, 9 -> println("Fantástico");
    8, 7 -> println("Parabéns");
    6, 5, 4 -> println("Tem como recuperar");
    in 0..3 -> println("Te vejo no próximo semestre");
    else -> println("Nota inválida");
}

}

Aula 15

Utilizando um laço for com range operator

fun main(args: Array) {
    val initialValue: Int = 1;
    val maxValue: Int = 10;
    for(value in initialValue..maxValue){
        println("Verificando o valor do contador $value");
    }
}

Aula 15

Utilizando um laço for utilizando o downTo

    for(i in 10 downTo 1){
        println("i = $i");
    }

Aula 16

Utilizando um laço for, verificando não somente o elemento como também o índice

fun main(args: Array) {
    val alunos = arrayListOf("Thadeu",  "Guilherme", "Clayton", "Fernando", "Philipe");
    for ((indice, aluno) in alunos.withIndex()){
        println("Indice $indice - Aluno $aluno");
    }
}

About


Languages

Language:Kotlin 98.6%Language:Java 1.4%