【发布时间】:2016-03-16 13:43:30
【问题描述】:
在 Kotlin 中,函数声明语法允许您在花括号前写等号。
考虑这两个例子:
- 没有
=符号:
fun foo1() {
println("baz1")
}
只需调用 foo1() 即可执行正文中的代码。
- 带有
=符号:
fun foo2() = {
println("baz2")
}
这里,当foo2() 被调用时,什么都不会发生,但是要执行主体可以写foo2()()。
这两个声明有什么区别以及为什么它们的行为不同?
您可以使用以下程序运行代码:
fun main() {
foo1()
foo2()
}
/*
This code example produces the following results:
baz1
*/
这个问题虽然没有多大意义,但[作者有意提出并回答][1],因为一些问题已经发布,人们因为不正确的函数定义而遇到问题。
【问题讨论】:
-
Kotlin 或 IDE 可能应该对此进行检查。 youtrack.jetbrains.com/issue/KT-11461
-
我的问题是函数调用后出现大括号。 This medium 文章解释了不同的语法替代方案。