企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] ### [函数作用域](http://www.kotlincn.net/docs/reference/functions.html#函数作用域) 在 Kotlin 中函数可以在文件顶层声明,这意味着你不需要像一些语言如 Java、C# 或 Scala 那样需要创建一个类来保存一个函数。**此外除了顶层函数,Kotlin 中函数也可以声明在局部作用域、作为成员函数以及扩展函数**。 #### [局部函数](http://www.kotlincn.net/docs/reference/functions.html#局部函数) Kotlin 支持局部函数,即一个函数在另一个函数内部,就是嵌套函数: ``` fun dfs(graph: Graph) { fun dfs(current: Vertex, visited: Set<Vertex>) { if (!visited.add(current)) return for (v in current.neighbors) dfs(v, visited) } dfs(graph.vertices[0], HashSet()) } ``` 局部函数可以访问外部函数(即闭包)的局部变量,所以在上例中,visited可以是局部变量: ``` fun dfs(graph: Graph) { val visited = HashSet<Vertex>() fun dfs(current: Vertex) { if (!visited.add(current)) return for (v in current.neighbors) dfs(v) } dfs(graph.vertices[0]) } ``` #### [成员函数](http://www.kotlincn.net/docs/reference/functions.html#成员函数) 成员函数是在类或对象内部定义的函数: ``` class Sample() { fun foo() { print("Foo") } } ``` 成员函数以点表示法调用: ~~~ Sample().foo() // 创建类 Sample 实例并调用 foo ~~~ 关于类和覆盖成员的更多信息参见[类](http://www.kotlincn.net/docs/reference/classes.html)和[继承](http://www.kotlincn.net/docs/reference/classes.html#继承)。 ### [泛型函数](http://www.kotlincn.net/docs/reference/functions.html#泛型函数) 函数可以有泛型参数,通过在函数名前使用尖括号指定: ~~~ fun <T> singletonList(item: T): List<T> { …… } ~~~ 关于泛型函数的更多信息参见[泛型](http://www.kotlincn.net/docs/reference/generics.html)。 ### 扩展函数