第一单元:在 Kotlin 中创建和使用函数
第一单元:在 Kotlin 中创建和使用函数
💡核心概念:借助函数,可以将代码拆分为可重复使用的部分,而不是将所有代码都放在
main函数中。函数是 Android 应用的基本构建块。
📋 本单元学习目标
- ✅ 定义和调用自己的函数
- ✅ 从函数中返回存储在变量中的值
- ✅ 定义和调用带有多个形参的函数
- ✅ 调用带有具名实参的函数
- ✅ 为函数形参设置默认值
📦 定义并调用函数
函数是什么?
函数是一段可重复使用的代码块,封装了完成某个特定任务的指令。
main函数是 Kotlin 程序的执行起点——由编译器自动调用。
声明语法
funname(){// 函数体:包含执行任务所需的指令}- 以
fun关键字开头,后跟函数名称、圆括号和大括号 - 调用函数时,将运行大括号中所含的代码
📝 示例
funmain(){birthdayGreeting()// 调用函数}funbirthdayGreeting(){println("Happy Birthday, xxxx!")println("You are now x years old!")}// 运行结果:// Happy Birthday, xxxx!// You are now x years old!📤 从函数返回值
Kotlin 函数可以生成并返回数据,这个值存储在变量中,可以在其他位置使用。
声明带返回值的函数
指定返回值类型:在圆括号后添加冒号、空格和类型名称。定义返回值类型后,函数体内必须有return语句。
funname():ReturnType{// 函数体returnsomeValue// return 关键字返回对应数据}Unit 类型(无返回值)
默认情况下,不指定返回值类型时,返回的是Unit类型——表示函数不会返回任何值,相当于其他语言中的void。
funmain(){birthdayGreeting()}funbirthdayGreeting():Unit{println("XXXXX")}// ⚠️ 此类函数不需要使用 return 语句(可以省略)💻 示例:返回 String
funbirthdayGreeting():String{valnameGreeting="Happy Birthday, xxxxx"valageGreeting="You are now x years old"return"$nameGreeting\n$ageGreeting"}funmain(){valgreeting=birthdayGreeting()// 接收返回值println(greeting)}✏️ 添加形参(Parameters)
语法
funname(parameters):ReturnType{// 函数体}每个形参由变量名称和数据类型组成,以:和空格分隔。
funbirthdayGreeting(name:String):String{valnameString="Happy Birthday,$name"valageString="You are now x years old"return"$nameString\n$ageString\n$name"}funmain(){birthdayGreeting("test")// 实参:真实传递的值}形参 vs 实参
| 概念 | 说明 |
|---|---|
| 形参(Parameter) | 函数定义中的变量,作为占位符使用 |
| 实参(Argument) | 调用函数时实际传递的值 |
⚠️与 Java 的区别:Java 中形参的值可以修改,而在 Kotlin 中形参是不可变的(等同于
val)。
多个形参
funbirthdayGreeting(name:String,age:Int):String{return"Happy Birthday,$name! You are now$ageyears old!"}🔖 函数签名
函数签名包含返回值类型前的所有内容,包括fun关键字、函数名和参数列表:
funbirthdayGreeting(name:String,age:Int)通过函数签名,可以快速了解函数名称和可传入的数据类型。
🏷️ 具名实参(Named Arguments)
用形参的名字来明确指定值——这样可以改变参数顺序,不必严格按照原有形参的顺序:
println(birthdayGreeting(name="XXX",age=5))// ✅ 按名称指定println(birthdayGreeting(age=5,name="XXX"))// ✅ 顺序可以调换!🎯 默认实参(Default Parameters)
定义函数时,可以给形参设定默认值。调用时可以不传该参数,使用默认值。
funbirthdayGreeting(name:String="Rover",age:Int):String{return"Happy Birthday,$name! You are now$ageyears old!"}// 省略 name 参数 → 使用默认值 "Rover"println(birthdayGreeting(age=5))// Happy Birthday, Rover! ...// 同时提供两个实参println(birthdayGreeting("Rex",2))// Happy Birthday, Rex! ...💡提示:当使用了默认参数时,调用函数需要使用具名实参来跳过默认值。
📚 参考学习资源
👉 Android Basics with Compose - Unit 1 Pathway
