Kotlin 2.4
Ejercicios de Kotlin sobre Funciones
7 ejercicios de Funciones en Kotlin. Piensa la respuesta antes de abrirla: la explicación dice por qué las demás opciones fallan.
1 · Elige la respuesta · nivel 1
¿Qué imprime este código?
fun triple(n: Int): Int { return n * 3} fun main() { println(triple(5))}- A15
- B8
- C53
- D5
Ver la respuesta
Respuesta: A. 15
triple(5) recibe n = 5 y devuelve 5 * 3. Ese valor es el que imprime println.
2 · Elige la respuesta · nivel 1
¿Qué imprime este código?
fun greet(name: String = "mundo") = "Hola, $name" fun main() { println(greet())}- AHola, mundo
- BHola, name
- CHola,
- DError: falta un argumento
Ver la respuesta
Respuesta: A. Hola, mundo
Un parámetro con valor por defecto es opcional: si no se pasa, vale "mundo". Así Kotlin evita tener que escribir varias versiones de la misma función.
3 · Encuentra el fallo · nivel 1
No compila: A 'return' expression required in a function with a block body. ¿Qué línea tiene el fallo?
1fun add(a: Int, b: Int): Int {2 a + b3}4 5fun main() {6 println(add(2, 3))7}Ver la respuesta
El fallo está en la línea 2:
a + bSe arregla conreturn a + b.Con llaves, la función necesita un return explícito. Solo las funciones con cuerpo de expresión (fun add(a: Int, b: Int) = a + b) devuelven el valor sin escribir return.
4 · Completa el hueco · nivel 1
Completa la declaración del punto de entrada del programa.
___ ___() { println("Arrancando")}- fun
- main
- function
- def
Ver la respuesta
Respuesta: fun · main
fun main() { println("Arrancando")}Las funciones de Kotlin se declaran con fun, y el programa empieza en la que se llama main. function es de JavaScript y def de Python.
5 · Ordena las líneas · nivel 1
Ordena el código: declara la función, úsala y muestra el resultado.
- fun square(n: Int) = n * n
- fun square(n: Int) => n * n
- println(result)
- val result = square(7)
Ver la respuesta
El orden correcto:
fun square(n: Int) = n * nval result = square(7)println(result)Sobran: fun square(n: Int) => n * n
Una función con cuerpo de expresión se escribe con = y el compilador infiere el tipo de retorno. => no existe en Kotlin.
6 · Ordena las líneas · nivel 1
Ordena el código: primero la función que saluda y después main, que la llama con "Ana".
- greet("Ana")
- }
- fun greet(name: String) = println("Hola, $name")
- fun main() {
Ver la respuesta
El orden correcto:
fun greet(name: String) = println("Hola, $name")fun main() { greet("Ana")}Una función de una sola línea se puede escribir con =, sin llaves. Los parámetros llevan el tipo detrás de dos puntos: name: String. main sí tiene bloque, así que la llamada va dentro de sus llaves.
7 · Elige la respuesta · nivel 2
¿Qué imprime este código?
fun rect(width: Int, height: Int) = "$width x $height" fun main() { println(rect(height = 2, width = 5))}- A5 x 2
- B2 x 5
- C5 x 5
- DError: orden incorrecto
Ver la respuesta
Respuesta: A. 5 x 2
Con argumentos nombrados el orden no importa: cada valor va al parámetro que dice su nombre. width vale 5 y height vale 2.