Capítulo 6 – Funciones en Kotlin

curso de programación kotlin

En este tema hablaremos de las funciones en kotlin, también llamadas métodos en otros lenguajes como por ejemplo java. Una función no es más que un conjunto de instrucciones que realizan una determinada tarea y la podemos invocar mediante su nombre.

Declarando funciones

Las funciones se declaran usando la palabra clave fun, seguida del nombre del método, los paréntesis donde declararemos los valores de entrada y unas llaves que limitan la función.

Si os fijáis en el código anterior, tenemos 4 métodos. 3 de ellos están destinados para una sola función (mostrar nombre, edad y apellidos) pero no se ejecutarán a no ser que sean llamados. Por ello el cuarto método que es el que se ejecutar el código, los llamará en el orden que le pongamos. Dándonos un resultado así.

curso de programación kotlin

Funciones con parámetros de entrada

Ahora vamos a ver las funciones con parámetros de entrada, que son iguales, pero al llamarlas habrá que mandarle las variables que necesite.

Como se puede observar, tiene tres parámetros de entrada, la forma de declararlos es muy fácil el nombre de la variable, seguida de dos puntos y el tipo de variable, aquí si es obligatorio definir el tipo.

Obviamente al llamar al método podemos pasarle variables recuperadas de otros métodos y demás.

Funciones con parámetros de salida

Nos queda por ver como una función puede devolver un resultado o lo que haga nuestro método. La única limitación es que solo se puede devolver un parámetro, aunque para eso tenemos los métodos (ya lo veremos más tarde).

Como el ejemplo anterior añadimos los parámetros de entrada pero esta vez, al cerrar los paréntesis pondremos el tipo de variable que debe devolver nuestra función. Luego la función hará todo lo que tenga que hacer y cuando tenga el resultado, lo devolveremos con la palabra clave return.

Si el método es muy fácil, podemos evitar las llaves y simplificar la función un poco más.

Comparte 🙂
0

17 comentarios sobre “Capítulo 6 – Funciones en Kotlin

  1. Alfonso C Contestar

    Hola, En el penúltimo código has puesto:
    var result = add(5, 10)
    println(resul)

    Creo que te ha faltado la “t” o estás haciendo referencia a otra variable llamada “resul” ??

    Gracias por el tutorial 🙂

    • Aris Autor del artículoContestar

      Buenas Alfonso, tienes toda la razón, me falta una t.

      Ya está corregido, muchas gracias 🙂

  2. Stefano Contestar

    No me gusto el ultimo ejemplo.
    Paso uno que hice para practicar, calculo de Compra+Gastos de envió.
    fun main(arg: Array) {
    var totalAPagar: Float = calcCompra(1134.60f, 289.20f)
    print(“El total a pagar es: $$totalAPagar”)
    }

    fun calcCompra(montoCompra: Float, gastosEnvio: Float) : Float{
    return montoCompra + gastosEnvio
    }

  3. Anthony Contestar

    Buenas tardes compañeros de aprendizaje, si alguien puede ayudarme con este codigo se lo agradecería ya que no encuentro el error.”Expecting a top level declaration”, gracias.

    fun main(args : Array) {
    val animal=”Dog”
    if (animal==”Dog”){
    println(“Es un perro”)
    }else if(animal==”cat”){

    }else if(animal==”bird”){
    println(“Es una pájaro”)
    }else {
    println(“No es un animal conocido”)
    }
    }

  4. Marco Contestar

    Hola Aris, he estado estudiando Kotlin y la verdad no he podido resolver este dilema, no se si quiera ayudarme, le paso el código:

    PD. gracias por esta buenísima página…

    open class RegistroP(){
    var nombre: String=””
    var apellido: String=””
    var estCivil: String=””
    var vivienda: String=””

    constructor (nombre: String, apellido: String, estCivil: String, vivienda: String): this() {
    this.nombre = nombre
    this.apellido = apellido
    this.estCivil = estCivil
    this.vivienda = vivienda
    }

    fun imprimir(){
    println(“Nombre: ” + nombre)
    println(“Apellido: ” + apellido)
    println(“Estado Civil: ” + estCivil)
    }

    }

    class MayorEd():RegistroP(){
    var edad: Int=0

    constructor (edad: Int): this() {
    this.edad = edad
    }
    fun edad(){
    if (edad>=18)println(“Es mayor de edad”) else println (“No es mayor de edad”)
    }
    }

    fun main(args: Array){

    var registro =RegistroP(“”, “”, “”, “” )

    println(“Digite nombres:”)//Aqui mi dilema, no se cómo hacer para que una clase reciba asignacion
    var registro.nombre = readLine()!!//desde teclado
    println(“Digite apellidos:”)
    var registro.apellido = readLine()!!
    println(“Digite estado civil: (Casada/Soltera/Viuda/Separada)”)
    var registro.estCivil = readLine()!!
    println(“Digite tipo vivienda: (Arriendo/Propia/Familiar)”)
    var registro.vivienda = readLine()!!

    registro.imprimir()

    var valEdad= MayorEd(15)
    valEdad.vivienda=”Arriendo”
    println(“Estado de vivienda: ” +valEdad.vivienda)
    valEdad.edad()

    }

    • Aris Autor del artículoContestar

      Buenas, para empezar analicemos unas cuantas cosas.
      Fíjate que cada vez que recibes un parámetro lo estás guardando en una variable nueva, por lo que cuando llamas a imprimir el objeto que quieres imprimir está vacío.

      Creas tu objeto RegistroP:

      var registro:RegistroP = RegistroP()

      Una vez creado, cuando quieres almacenar la información que recibes del usuario no puedes hacer por ejemplo var registro.estCivil porque estás diciéndole que cree una variable nueva con la palabra reservada var.

      Como ya has creado un objeto llamado “registro” por ejemplo, simplemente asígnale el valor:

      registro.apellido = readLine()!!

      Sin el var delante.

      Y llama a imprimir cuando tengas todos los datos rellenos.

      Un saludo

  5. Marco Contestar

    Muchas gracias Aris, tienes razón ese es el error, voy a ahorrar para meterme en tu curso para poder pulirme mejor en esto…

    • Aris Autor del artículoContestar

      Me alegro que funcione, te recomiendo esperar un poco que en breve habrán muchas novedades 😉

  6. Pau Contestar

    Me da error con args en la función main me pone esto:
    warning: parameter ‘args’ is never used. Y no me muestra nada en pantalla con println y lo de la concatenación en las variables de entrada no se me pone en verde y depues no me muestra tampoco nada pero al final de todo me pone esto: Process finished with exit code 0, que teóricamente significa que esta bien no? Y después de todo esto se me ha ocurrido hacer ctrl + c, ctrl + v, en tu código de la variable de entrada y también me daban todos estos errores anteriores

    • Aris Autor del artículoContestar

      Lo primero que debemos entender es la diferencia entre un error y un warning. Un error sale en rojo y nos avisa de que no vamos a poder compilar la aplicación. Un warning se muestra amarillo y son solo avisos que nos ayudan a optimizar el código.

      ¿Puedes añadir el código para ver cual es el problema?

      Un saludo.

  7. Pau Contestar

    Al final he copiado el tuyo de aquí de funciones de parámetros de salida y el de funciones de parámetro de entrada primero he hecho mis pruebas y después he probado con tu código y me seguía dando la advertencia.

    • Aris Autor del artículoContestar

      Es normal que te salga el warning, pero no debería generar ningún tipo de problema para el ejemplo que hemos visto.

  8. Pau Contestar

    Si no he entendido mal en el ejemplo de las funciones con parámetros de entrada al ejecutar el código se debería mostrar el texto escrito dentro del println y las variables concatenadas. Pero a mí solo me muestra el warning.

    • Aris Autor del artículoContestar

      Podrías hacer un screenshot donde se vea el código y el terminal que muestra el warning?.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *