Como são descritas as funções em Kotlin?
sobes.tech IA
Resposta da IA
As funções são declaradas usando a palavra-chave fun, seguida do nome da função, a lista de parâmetros entre parênteses (opcional), dois pontos e o tipo de retorno (opcional). O corpo da função está entre chaves. Se o tipo de retorno for omitido, a função retorna Unit (equivalente a void em outras linguagens).
// Função sem parâmetros e sem valor de retorno
fun greet() {
println("Hello!")
}
// Função com parâmetros
fun add(x: Int, y: Int): Int {
return x + y
}
// Função com uma única expressão (sintaxe de corpo abreviado)
fun multiply(a: Int, b: Int) = a * b
Os parâmetros da função são declarados no formato nomeParametro: Tipo. É possível especificar valores padrão para os parâmetros.
fun sendMessage(message: String, sender: String = "Unknown") {
println("$sender: $message")
}
As funções podem ser declaradas ao nível superior do arquivo ou como membros de classes, objetos ou interfaces.
-
Funções de nível superior: Declaradas fora de classes.
fun calculateArea(radius: Double): Double { return Math.PI * radius * radius } -
Funções membro: Declaradas dentro de classes.
class MyClass { fun doSomething() { println("Doing something.") } } -
Funções de extensão: Permitem "adicionar" funções a classes existentes sem modificar seu código fonte.
fun String.reverseAndUpperCase(): String { return this.reversed().toUpperCase() }
Expressões lambda e funções anônimas representam literais funcionais que podem ser passados como argumentos ou atribuídos a variáveis.
val sum: (Int, Int) -> Int = { x, y -> x + y }
val greeting = { name: String -> "Hello, $name!" }
Funções de ordem superior aceitam funções como parâmetros ou retornam funções.
fun operate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
return operation(a, b)
}
val result = operate(5, 3, { x, y -> x * y }) // result = 15
Sobrecarga de funções (diferentes funções com o mesmo nome, mas assinaturas diferentes) é suportada automaticamente.
fun printInfo(name: String) {
println("Name: $name")
}
fun printInfo(age: Int) {
println("Age: $age")
}