kotlin:一文打尽kotlin函数部分重要知识点
Kotlin函数特性摘要:Kotlin函数融合面向对象与函数式编程,提供多种函数类型。包括普通函数、扩展函数、高阶函数、Lambda表达式、作用域函数、局部函数、尾递归函数、中缀函数和泛型函数。关键特性有参数灵活性(默认/具名参数)、单表达式函数和函数类型引用。高级概念涵盖内联函数、闭包、函数组合与柯里化,提升代码简洁性和复用性。这些特性使Kotlin函数兼具表达力与性能优势。
Kotlin 的函数是其强大表达力的核心,融合了面向对象和函数式编程的优点。下面这个汇总了主要的函数类型和核心概念,让你快速构建知识框架。
🔹 普通函数 使用 fun 关键字声明。代码复用的基础。
fun greet(name: String) { println("Hello, $name") }
🔹 扩展函数 为已有类添加新功能,无需继承。
fun String.lastChar(): Char = this[length - 1]
🔹 高阶函数 将函数作为参数或返回值。函数式编程的基石。
fun list.apply(operation: (T) -> Unit) { forEach(operation) }
🔹 Lambda 表达式 匿名函数的简洁语法。
val sum = { x: Int, y: Int -> x + y } 或 list.filter { it > 0 }
🔹 作用域函数 (let, apply, run, with, also) 在对象的上下文中执行代码块,简化操作。
person.apply { name = "Tom"; age = 20 }
🔹 局部函数 在函数内部定义函数,实现逻辑封装。 在外部函数内定义,可访问外部函数的局部变量
🔹 尾递归函数 (tailrec) 将递归优化为循环,防止栈溢出。
tailrec fun factorial(n: Int, acc: Int = 1): Int = if (n<=1) acc else fact(n-1, n*acc)
🔹 中缀函数 (infix) 允许以 a function b 格式调用,提升可读性。
infix fun Int.shl(x: Int): Int { ... }
使用:1 shl 2
🔹 泛型函数 增加代码的类型安全性和复用性。 fun singletonList(item: T): List { … }
🔹 函数式编程概念 强调纯函数、不可变性、组合。 使用表达式而非语句,力求无副作用
下面我们深入看看一些核心特性和高级用法。
💡 关键特性与细节
掌握Kotlin函数,还需要理解一些赋予其灵活性和简洁性的关键特性。
-
参数灵活性
◦ 默认参数:允许为函数参数设置默认值,有效减少重载函数的数量。调用时可以省略有默认值的参数 。◦ 具名参数:在调用函数时,可以通过参数名来指定值,这意味着你可以忽略参数的顺序,使代码意图更清晰 。
-
单表达式函数
当函数体只有一个表达式时,可以省略花括号,使用 = 连接,返回类型通常也可自动推断 。例如,
fun double(x: Int) = x * 2
- 函数类型与引用
在Kotlin中,函数也有自己的类型,格式为 (参数类型) -> 返回类型。你可以使用 :: 操作符获取一个已有函数的引用,并将其赋值给变量或作为参数传递 。例如,val myFunction: (Int) -> Int = ::double。
🚀 高级函数概念
在基础之上,一些高级概念能让你更好地运用函数式编程范式。
• 内联函数:使用 inline 关键字修饰高阶函数,可以避免Lambda表达式在运行时带来的额外开销。编译器会将函数体直接"内联"到调用处,提升性能 。
• 闭包:Lambda表达式或匿名函数可以访问并修改其定义作用域内的变量。这个特性非常强大,允许函数"记住"并操作其创建时的环境 。
• 函数组合与柯里化:
◦ 函数组合是将多个函数串联起来,前一个函数的输出作为后一个函数的输入。
◦ 柯里化是将一个多参数函数转换为一系列单参数函数的过程。例如,
fun add(x: Int) = { y: Int -> x + y }
调用方式为 add(5)(3) 。这为函数复用和组合提供了更多灵活性。
更多推荐



所有评论(0)