当前位置: 首页 > news >正文

第一单元:在 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

http://www.jsqmd.com/news/1099588/

相关文章:

  • 20260630 - 看门狗
  • 垃圾自动分类技术:从AI识别到机械分拣的工程实践与选型指南
  • 谷歌研究院打造“论文助手工具“,AI审稿时代正在悄然开启
  • 王建:GEO的效果与信源密不可分 企业不要再一味追求“效率”
  • 【实证分析】地级市互联网综合发展指数(2003-2024年)
  • ArkTS 双向绑定输入框代码完整详解和 个人信息卡片代码完整详解(ArkTS)
  • Agent Skill 学习笔记
  • LeetCode 902 最大为 N 的数字组合:python3 题解
  • 基于.NET AgentFramework开发OpenClaw智能体框架
  • OpenClaw Ubuntu 部署经验总结
  • Go语言面试遇到,面试官问什么是协程、什么是协程泄漏和数组跟切片是用该如何回答
  • 深入浅出理解卷积的概念
  • GESP2026年6月认证C++三级( 第三部分编程题(1、加密))精讲
  • 仅限高级运维查看:VMware跨主机磁盘共享映射的3层隔离机制(含vSAN与NFS混合场景避坑清单)
  • 告别锁竞争:用C++11的concurrentqueue重构你的生产者消费者模型(附完整代码)
  • 一天一个Python库:tomlkit - 轻松解析和操作TOML配置
  • Magpie深度解析:3步让老旧游戏在4K屏幕上焕发新生
  • 【Java从入门到精通】第10篇:抽象类与接口的博弈——模板方法模式与面向接口编程
  • 从 Chatbot 到 Agent:Skill、MCP、CLI 如何让 AI 真正干活
  • NSF与NASA联合资助国际空间站研究:软骨组织工程“飞向”太空轨道
  • 基于51/STM32单片机分贝仪检测 噪音等级声音采集(设计源文件+万字报告+讲解)(支持资料、图片参考_降重降ai)
  • 终极指南:如何安全备份微信聊天记录的技术方案解析
  • Python基础:三元表达式极简写法与高阶嵌套、场景避坑指南
  • 运维实战:从Linux基础到Zabbix、Docker、MySQL的系统化集成与监控
  • RAG 查询改写:如何把用户的随口一问,改写成检索系统能命中问题
  • 第22天:CFS 调度:完全公平调度的核心原理
  • Adobe-GenP 3.0:终极Adobe软件激活指南与使用技巧
  • Godot【使用篇】01:Hello World
  • AKShare:金融数据接口的架构哲学与实践反思
  • DeepSeek美化-为 DeepSeek 网页版引入 Obsidian Border 主题视觉风格