kotlin顶层函数和函数表达式怎么用
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章将为大家详细讲解有关kotlin顶层函数和函数表达式怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。顶层函数不同于Java中函数只能定义在每个类里面,K
千家信息网最后更新 2025年01月23日kotlin顶层函数和函数表达式怎么用
这篇文章将为大家详细讲解有关kotlin顶层函数和函数表达式怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
顶层函数
不同于Java中函数只能定义在每个类里面,Kotlin采用了JavaScript 中的做法,可以在文件任意位置处定义函数,这种函数称为顶层函数
编译后顶层函数会成为文件类下的静态函数,比如在文件名是join.kt下定义的joinToString函数可以通过JoinKt.joinToSting调用,其中JoinKt是编译后的类名。
// 编译成静态函数// 文件名 join.ktpackage stringsfun joinToString() : String {...}/* Java */import strings.JoinKt;JoinKt.joinToSting(....)
看下上面函数编译后的效果:// 编译成class文件后反编译结果
// 编译成class文件后反编译结果@NotNullpublic static final String joinToString(@NotNull Collection collection, @NotNull String separator, @NotNull String prefix, @NotNull String postfix) { Intrinsics.checkParameterIsNotNull(collection, "collection"); Intrinsics.checkParameterIsNotNull(separator, "separator"); Intrinsics.checkParameterIsNotNull(prefix, "prefix"); Intrinsics.checkParameterIsNotNull(postfix, "postfix"); StringBuilder sb = new StringBuilder(prefix); int index = 0; for(Iterator var7 = ((Iterable)collection).iterator(); var7.hasNext(); ++index) { Object element = var7.next(); if (index > 0) {sb.append(separator); } sb.append(element); } sb.append(postfix); String var10000 = sb.toString(); Intrinsics.checkExpressionValueIsNotNull(var10000, "sb.toString()"); return var10000; }// 默认函数值public static String joinToString$default(Collection var0, String var1, String var2, String var3, int var4, Object var5) { if ((var4 & 2) != 0) { var1 = " "; } if ((var4 & 4) != 0) { var2 = "["; } if ((var4 & 8) != 0) { var3 = "]"; } return joinToString(var0, var1, var2, var3);
接下来看下Kotlin中很重要的一个特性,扩展函数。
扩展函数
扩展函数是类的一个成员函数,不过定义在类的外面
扩展函数不能访问私有的或者受保护的成员
扩展函数也是编译成静态函数
表达式函数体
通过下面这个简单的例子看下函数声明相关的概念,函数声明的关键字是fun,嗯,比JS的function还简单。
Kotlin中参数类型是放在变量:后面,函数返回类型也是。
fun max(a: Int, b: Int) : Int {if (a > b) {return a } else {return b}}
当然, Kotlin是有类型推导功能,如果可以根据函数表达式推导出类型,也可以不写返回类型。
但是上面的还是有点繁琐,还能再简单,在 Kotlin中if是表达式,也就是有返回值的,因此可以直接return,另外判断式中只有一行一句也可以省略掉大括号:
fun max(a: Int, b: Int) {return if (a > b) a else b}
还能在简单点吗?可以,if是表达式,那么就可以通过表达式函数体返回:
fun max(a: Int, b: Int) = if(a > b) a else b
最终只需要一行代码。
关于"kotlin顶层函数和函数表达式怎么用"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
函数
编译
表达式
文件
顶层
类型
篇文章
静态
一行
可以通过
成员
文件名
更多
结果
不错
实用
重要
繁琐
也就是
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
yhxs数据库怎么建
软件开发自主性说明
岳阳哪里可以学习数据库
面试如何看待软件开发行业
虚拟集群有哪些服务器系统
方舟生存进化服务器炸服两天
云服务器上开直播
软件开发怎样选笔记本
sql 服务器时间
ajax加载下拉框数据库
计算机网络技术毕业起薪
小学生自主软件开发
软件开发金融信息化
如皋软件开发培训
服务器安防
新版本绝地求生服务器在哪里选择
树莓派做spring服务器
团省委网络安全
股票期货软件开发语言
重启服务器asm没有起来
通达oa数据库结构
seek数据库
网络安全等级保护升级2.0
西北工业大学网络安全学院的电话
如何用数据库做备份
汉声杂志数据库
无法访问服务器倩女幽魂
网络技术应用期末测试
软件开发第一个里程碑
济南智飞网络技术