在Kotlin中,函数声明语法允许您在花括号之前写入等号.考虑这两个例子:
没有=标志:
fun foo() {
bar()
println("baz")
}
Run Code Online (Sandbox Code Playgroud)
只需调用即可执行正文中的代码foo().
带=标志:
fun foo() = {
bar()
println("baz")
}
Run Code Online (Sandbox Code Playgroud)
在这里,当foo()被调用时,没有任何事情发生,但为了让身体执行,可以写foo()().
这两个声明有什么不同,为什么它们的表现不同?
我很迷惑.
我认为一切都是表达式,因为语句返回一个值.但我也听说scala中的所有东西都是一个对象.
实际上是什么?为什么scala选择以某种方式做到这一点?这对scala开发人员意味着什么?