¿Cómo se describen las funciones en Kotlin?
sobes.tech AI
Respuesta de la IA
Las funciones se declaran usando la palabra clave fun, seguida del nombre de la función, la lista de parámetros entre paréntesis (opcional), dos puntos y el tipo de retorno (opcional). El cuerpo de la función está entre llaves. Si se omite el tipo de retorno, la función devuelve Unit (equivalente a void en otros lenguajes).
// Función sin parámetros y sin valor de retorno
fun greet() {
println("Hello!")
}
// Función con parámetros
fun add(x: Int, y: Int): Int {
return x + y
}
// Función con una sola expresión (sintaxis de cuerpo abreviado)
fun multiply(a: Int, b: Int) = a * b
Los parámetros de la función se declaran en el formato nombreParametro: Tipo. Se pueden especificar valores predeterminados para los parámetros.
fun sendMessage(message: String, sender: String = "Unknown") {
println("$sender: $message")
}
Las funciones pueden declararse a nivel superior del archivo o ser miembros de clases, objetos o interfaces.
-
Funciones de nivel superior: Se declaran fuera de las clases.
fun calculateArea(radius: Double): Double { return Math.PI * radius * radius } -
Funciones miembro: Se declaran dentro de clases.
class MyClass { fun doSomething() { println("Doing something.") } } -
Funciones de extensión: Permiten "agregar" funciones a clases existentes sin modificar su código fuente.
fun String.reverseAndUpperCase(): String { return this.reversed().toUpperCase() }
Las expresiones lambda y las funciones anónimas son literales funcionales que pueden pasarse como argumentos o asignarse a variables.
val sum: (Int, Int) -> Int = { x, y -> x + y }
val greeting = { name: String -> "Hello, $name!" }
Las funciones de orden superior aceptan funciones como parámetros o devuelven funciones.
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
La sobrecarga de funciones (diferentes funciones con el mismo nombre pero firmas distintas) se soporta automáticamente.
fun printInfo(name: String) {
println("Name: $name")
}
fun printInfo(age: Int) {
println("Age: $age")
}