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.

Respuestas a la pregunta(1)

Su respuesta a la pregunta