Introdução
Continuando aprendizado e descoberta sobre Kotlin. Falaremos sobre Ranges.
Recursos da linguagens observadores e experimentados
Nessa seção, pretendo falar de alguns recursos que pude experimentar durante o curso, e pratiquei em um projeto piloto que está disponível em um repositório no meu github onde pretendo colocar os demos do que ando testando com Kotlin. Esse repositório é o kotlin-lab.
Ranges
Kotlin tem um mecanismo que lida com intervalos chamado Range. Um range define um intervalo fechado entre dois pontos e os pontos são incluídos nesse intervalo. Eles são definidos por tipos comparáveis que possuem critério de ordem. Qualquer classe que implemente a interface Comparable pode criar um Range. Um uso muito comum é para intervalos númericos, datas e textos. Alguns exemplos seguem abaixo:
Para utilização de ranges é necessário seguir a seguinte sintaxe inicioRange..fimRange. Para testes condicionais é possível utilizar as funções in e !in. Ranges númericos ((IntRange, LongRange, CharRange) tem um recurso adicional que eles podem ser iterados. Esses ranges também são progressões (uma sequência numérica que a diferença entre os números tem uma valor constante).
Para iterar na ordem reversa os números, existe a função downTo ao invés de .., como mostra o exemplo abaixo:
É possível definir também o salto (o padrão é um) para uma iteração de um range, usando a sintaxe step.
Como podemos observar no exemplo acima, os intervalos de um range são inclusivos. Caso queira excluir o último elemento deve ser usado a função until, como no exemplo abaixo:
Exemplo de range de characteres:
forEach e iterator
Para iterar um range também existe a possibilidade de utilizar um forEach ou usar um iterator, como no exemplo abaixo:
Range suporta operações filter, reduce e map
Range possui operações pre-definidas de min, max, sum,count, average, distinct
Função reversed para iteração em ordem reversa
Encontrar primeiro, último e step.
Qualquer objeto pode ser colocado como Range, desde que implemente a interface Comparable
Conclusão
Nos dois links abaixo é possível brincar um pouco online com ranges em Kotlin. A documentação da linguagem também é auto-explicativa e provê muitos recursos.
Nesse estudo, apresentei alguns recursos do Kotlin que são bastante inovadores para mim que vim da linguagem Java. Espero continuar aprendendo.
Outras Fontes:
- https://kotlinlang.org/docs/reference/ranges.html
- https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.ranges/range-to.html
- https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.ranges/-int-range/
- https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.ranges/-long-range/
- https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.ranges/-char-range/
- http://zetcode.com/kotlin/ranges/
- https://www.baeldung.com/kotlin-ranges
- https://www.geeksforgeeks.org/kotlin-ranges/
- https://beginnersbook.com/2019/02/kotlin-ranges/