跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
Kotlin函数定义
”︁(章节)
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= Kotlin函数定义 = '''Kotlin函数'''是执行特定任务的代码块,可以接收输入参数并返回结果。函数是Kotlin语言的核心组成部分,支持多种定义方式和高级特性。 == 基本语法 == Kotlin使用<code>fun</code>关键字定义函数,基本结构如下: <syntaxhighlight lang="kotlin"> fun functionName(parameters: ParameterType): ReturnType { // 函数体 return result } </syntaxhighlight> === 无参数函数示例 === <syntaxhighlight lang="kotlin"> fun greet(): String { return "Hello, World!" } fun main() { println(greet()) // 输出: Hello, World! } </syntaxhighlight> === 带参数函数示例 === <syntaxhighlight lang="kotlin"> fun add(a: Int, b: Int): Int { return a + b } fun main() { println(add(5, 3)) // 输出: 8 } </syntaxhighlight> == 函数组件详解 == === 1. 参数 === Kotlin支持: * 默认参数 * 命名参数 * 可变参数 <syntaxhighlight lang="kotlin"> fun printInfo(name: String, age: Int = 25, vararg hobbies: String) { println("Name: $name, Age: $age") hobbies.forEach { println("Hobby: $it") } } fun main() { printInfo("Alice") // 使用默认age printInfo("Bob", 30, "Reading", "Swimming") // 传递可变参数 printInfo(name = "Charlie", age = 28) // 命名参数 } </syntaxhighlight> === 2. 返回类型 === * 显式声明:<code>: ReturnType</code> * 类型推断:单表达式函数可省略返回类型 <syntaxhighlight lang="kotlin"> // 显式声明 fun square(x: Int): Int { return x * x } // 类型推断 fun cube(x: Int) = x * x * x </syntaxhighlight> == 函数类型 == Kotlin函数可分为以下几类: <mermaid> pie title Kotlin函数类型分布 "成员函数" : 35 "顶层函数" : 30 "局部函数" : 15 "扩展函数" : 20 </mermaid> === 1. 成员函数 === 定义在类或对象内部: <syntaxhighlight lang="kotlin"> class Calculator { fun add(a: Int, b: Int): Int = a + b } </syntaxhighlight> === 2. 顶层函数 === 直接定义在文件中: <syntaxhighlight lang="kotlin"> // 文件: MathUtils.kt fun factorial(n: Int): Long { return if (n <= 1) 1 else n * factorial(n - 1) } </syntaxhighlight> === 3. 局部函数 === 在另一个函数内部定义: <syntaxhighlight lang="kotlin"> fun outerFunction() { fun innerFunction() { println("内部函数") } innerFunction() } </syntaxhighlight> === 4. 扩展函数 === 为现有类添加新功能: <syntaxhighlight lang="kotlin"> fun String.addExclamation(): String = "$this!" fun main() { println("Hello".addExclamation()) // 输出: Hello! } </syntaxhighlight> == 高级特性 == === 1. 高阶函数 === 接收函数作为参数或返回函数: <syntaxhighlight lang="kotlin"> fun calculate(x: Int, y: Int, operation: (Int, Int) -> Int): Int { return operation(x, y) } fun main() { val result = calculate(10, 5) { a, b -> a * b } println(result) // 输出: 50 } </syntaxhighlight> === 2. Lambda表达式 === 匿名函数的简洁写法: <syntaxhighlight lang="kotlin"> val sum = { x: Int, y: Int -> x + y } println(sum(2, 3)) // 输出: 5 </syntaxhighlight> === 3. 中缀表示法 === 适用于单参数成员函数或扩展函数: <syntaxhighlight lang="kotlin"> infix fun Int.times(str: String) = str.repeat(this) fun main() { println(2 times "Bye ") // 输出: Bye Bye } </syntaxhighlight> == 数学函数示例 == 计算两点间距离的函数: <math> distance = \sqrt{(x2-x1)^2 + (y2-y1)^2} </math> Kotlin实现: <syntaxhighlight lang="kotlin"> import kotlin.math.sqrt import kotlin.math.pow fun distance(x1: Double, y1: Double, x2: Double, y2: Double): Double { return sqrt((x2 - x1).pow(2) + (y2 - y1).pow(2)) } fun main() { println(distance(0.0, 0.0, 3.0, 4.0)) // 输出: 5.0 } </syntaxhighlight> == 实际应用案例 == '''电商系统价格计算函数''': <syntaxhighlight lang="kotlin"> fun calculateTotal( basePrice: Double, discount: Double = 0.0, taxRate: Double = 0.1, applyCoupon: (Double) -> Double = { it } ): Double { val discounted = basePrice * (1 - discount) val couponApplied = applyCoupon(discounted) return couponApplied * (1 + taxRate) } fun main() { val total = calculateTotal(100.0, 0.2) { price -> if (price > 50) price - 10 else price } println("总价: $$total") // 输出示例: 总价: $99.0 } </syntaxhighlight> == 最佳实践 == 1. 使用描述性函数名 2. 保持函数简短(建议不超过20行) 3. 遵循单一职责原则 4. 合理使用默认参数减少重载 5. 对于复杂逻辑,考虑分解为多个小函数 == 常见错误 == * 忘记返回类型(非单表达式函数) * 参数类型不匹配 * 混淆<code>Unit</code>与空返回 * 可变参数位置错误(必须是最后一个参数) <syntaxhighlight lang="kotlin"> // 错误示例 fun problematic(a: Int, vararg b: String, c: Double) { ... } // 编译错误 </syntaxhighlight> == 性能考虑 == * 内联函数(<code>inline</code>)适合高阶函数,可减少运行时开销 * 避免在循环中创建大量临时lambda * 尾递归函数(<code>tailrec</code>)优化递归性能 <syntaxhighlight lang="kotlin"> tailrec fun factorial(n: Int, acc: Long = 1): Long { return if (n <= 1) acc else factorial(n - 1, n * acc) } </syntaxhighlight> == 总结 == Kotlin函数提供了强大而灵活的方式来组织代码,从简单的工具函数到复杂的高阶函数,支持多种编程范式。掌握函数定义是成为Kotlin开发者的基础,也是理解更高级语言特性的关键。 [[Category:编程语言]] [[Category:Kotlin]] [[Category:Kotlin函数]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)