【发布时间】:2017-10-02 02:42:43
【问题描述】:
在这个简单的代码示例中...
fun testLocalFunctions() {
aLocalFun() //compiler error: unresolved reference at aLocalFun
fun aLocalFun() {}
aLocalFun() //no error
}
在语言的其他地方,允许在定义之前使用函数。但对于本地功能,情况似乎并非如此。参考Kotlin Language Specification,Local Functions 部分依然标注为“TODO”。
由于这种约束不适用于其他类型的函数(顶级和成员函数),这是一个错误吗?
(当然,局部变量声明必须在使用之前进行,因此对局部函数的相同约束并非不合理。是否有明确的、最好是权威的源文档来讨论这种行为?)
【问题讨论】:
-
局部函数可以使用局部变量,因此如果没有这个限制,您最终会得到一个更复杂的函数,例如“局部函数只能在声明它使用的所有局部变量后使用”。
标签: kotlin