今天继续分享Kotlin学习内容。
目标:掌握函数定义、调用、参数传递,以及 Lambda 表达式的基础用法
1. 函数:Kotlin 的代码模块化工具
定义:函数是可重复调用的代码块,用于封装逻辑。
语法:
fun 函数名(参数列表): 返回类型 {// 函数体return 结果 // 可省略(若表达式函数或返回类型可推断)
}
示例 1:基础函数
fun greet(name: String): String {return "Hello, $name!"
}fun main() {println(greet("Alice")) // 输出: Hello, Alice!
}
示例 2:无返回值函数(Unit 类型可省略)
fun printMessage(message: String) {println("Message: $message")
}fun main() {printMessage("Kotlin is fun!") // 输出: Message: Kotlin is fun!
}
示例 3:默认参数与命名参数
fun calculateArea(width: Double, height: Double = 10.0): Double {return width * height
}fun main() {println(calculateArea(5.0)) // 使用默认 height: 输出 50.0println(calculateArea(5.0, 20.0)) // 覆盖默认值: 输出 100.0
}
2. Lambda 表达式:轻量级匿名函数
定义:Lambda 是没有名称的函数,通常用于简化代码。
语法:
{ 参数列表 -> 函数体 }
示例 1:Lambda 基础
fun main() {val greetLambda: (String) -> String = { name -> "Hi, $name!" }println(greetLambda("Bob")) // 输出: Hi, Bob!
}
示例 2:Lambda 作为函数参数
fun processString(input: String, transform: (String) -> String): String {return transform(input)
}fun main() {val result = processString("kotlin") { it.uppercase() } // 参数名用 it 隐式表示println(result) // 输出: KOTLIN
}
示例 3:高阶函数与 Lambda 结合
fun operateOnNumbers(a: Int, b: Int, operation: (Int, Int) -> Int): Int {return operation(a, b)
}fun main() {val sum = operateOnNumbers(3, 5) { x, y -> x + y } // 加法val product = operateOnNumbers(3, 5) { x, y -> x * y } // 乘法println("Sum: $sum, Product: $product") // 输出: Sum: 8, Product: 15
}
3. 函数 vs Lambda:何时使用?
函数:
需要复用逻辑时。
逻辑复杂,需多行代码时。
Lambda:
逻辑简单,仅需一次使用时。
作为参数传递给高阶函数时(如 map, filter)。
4. 今日练习建议
最后来练习一下吧
任务 1:定义一个函数 calculateDiscount(price: Double, discount: Double): Double,返回折扣后的价格。
任务 2:用 Lambda 表达式重写 calculateDiscount,并调用它。
任务 3:编写一个高阶函数 applyOperation,接受两个数字和一个 Lambda 操作(如加法、减法),返回结果。
// 示例调用
val result = applyOperation(10, 5) { a, b -> a - b } // 输出 5
挑战题:用 Lambda 和 map 函数将一个字符串列表转为大写形式:
val names = listOf("alice", "bob", "charlie")
// 输出: [ALICE, BOB, CHARLIE]
5. 常见错误提示
错误 1:Lambda 参数类型推断失败时,需显式声明类型:
val lambda: (Int, Int) -> Int = { a, b -> a + b } // 显式声明类型
错误 2:忘记 Lambda 的最后一个表达式是返回值(无 return 关键字)。
错误 3:混淆函数和 Lambda 的调用方式(函数直接写名称,Lambda 需赋值或传递)。
Lambda 是 Kotlin 的“瑞士军刀”,尤其在集合操作(如 filter, map)中非常强大。
默认参数和命名参数能让函数更灵活,减少重载函数的编写。