Declaración de función de Kotlin: signo igual antes de llaves
En Kotlin, la sintaxis de declaración de función le permite escribir el signo igual antes de las llaves. Considere estos dos ejemplos:
Sin=
firmar:
fun foo() {
bar()
println("baz")
}
El código dentro del cuerpo se ejecuta simplemente llamandofoo()
.
Con=
firmar:
fun foo() = {
bar()
println("baz")
}
Aquí cuandofoo()
se llama, no pasa nada, pero para ejecutar el cuerpo se puede escribirfoo()()
.
¿Cuál es la diferencia en estas dos declaraciones y¿Por qué se comportan de manera diferente?
Esta pregunta, aunque no tiene mucho significado, esintencionalmente preguntado y respondido por el autor, porque ya se han publicado algunas preguntas en las que las personas tienen problemas debido a definiciones de funciones incorrectas.