Introdução à “Funções”
Definição
A declaração de uma função é feita a partir da palavra reservada fun
.
Por padrão toda função tem como tipo de retorno Unit
.
O encadeamento de chamadas de função é feita através da notação ponto .
:
"Olá ".plus("Mundo!").length // 10
Documentação: clique aqui
Exemplo
fun double(x: Int): Int {
return x * 2
}
double(2) // 4
Tipos de funções
-
Anônimas
-
Single-line
-
Inline
-
Extensões
-
Lambdas
-
Ordem superior
Função simples
private fun getFullName(firstName: String, lastName: String): String {
val fullName = "$firstName $lastName"
return fullName
}
private fun getFullName(firstName: String, lastName: String): String {
return "$firstNme $lastName"
}
Função de ordem superior
-
Recebem outra função ou lambda como parâmetro
-
Bastante úteis para a generalização de funções e tratamento de erros
-
Exemplos
val x = calculate(12, 4, ::sum) // parâmetro é uma função anônima
val x = calculate(12, 4) {a, b -> a + b} // parâmetro é uma função com implementação
fun sum(a: Int, b: Int) = a.plus(b) fun calculate(a: Int, b: Int, operation: (Int, Int) -> Int) = operation(a, b) fun main() { val result1 = calculate(5, 4) {a, b -> a * b} val result2 = calculate(5, 4, ::sum) println(result1) println(result2) }
Função extensão
-
Criar uma função que só pode ser chamada por um tipo específico
-
Para referênciar o valor em questão, dentro da função, usa-se a palavra reservada
this
-
Exemplo
fun String.randomCapitalizedLetter() = this[(0..this.length - 1).random()].toUpperCase()