kotlin顶层函数和函数表达式怎么用
这篇文章将为大家详细讲解有关kotlin顶层函数和函数表达式怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
顶层函数
不同于Java中函数只能定义在每个类里面,Kotlin采用了JavaScript 中的做法,可以在文件任意位置处定义函数,这种函数称为顶层函数
编译后顶层函数会成为文件类下的静态函数,比如在文件名是join.kt下定义的joinToString函数可以通过JoinKt.joinToSting调用,其中JoinKt是编译后的类名。
//编译成静态函数//文件名join.ktpackagestringsfunjoinToString():String{...}/*Java*/importstrings.JoinKt;JoinKt.joinToSting(....)
看下上面函数编译后的效果:// 编译成class文件后反编译结果
//编译成class文件后反编译结果@NotNullpublicstaticfinalStringjoinToString(@NotNullCollectioncollection,@NotNullStringseparator,@NotNullStringprefix,@NotNullStringpostfix){Intrinsics.checkParameterIsNotNull(collection,"collection");Intrinsics.checkParameterIsNotNull(separator,"separator");Intrinsics.checkParameterIsNotNull(prefix,"prefix");Intrinsics.checkParameterIsNotNull(postfix,"postfix");StringBuildersb=newStringBuilder(prefix);intindex=0;for(Iteratorvar7=((Iterable)collection).iterator();var7.hasNext();++index){Objectelement=var7.next();if(index>0){sb.append(separator);}sb.append(element);}sb.append(postfix);Stringvar10000=sb.toString();Intrinsics.checkExpressionValueIsNotNull(var10000,"sb.toString()");returnvar10000;}//默认函数值publicstaticStringjoinToString$default(Collectionvar0,Stringvar1,Stringvar2,Stringvar3,intvar4,Objectvar5){if((var4&2)!=0){var1="";}if((var4&4)!=0){var2="[";}if((var4&8)!=0){var3="]";}returnjoinToString(var0,var1,var2,var3);
接下来看下Kotlin中很重要的一个特性,扩展函数。
扩展函数
扩展函数是类的一个成员函数,不过定义在类的外面
扩展函数不能访问私有的或者受保护的成员
扩展函数也是编译成静态函数
表达式函数体
通过下面这个简单的例子看下函数声明相关的概念,函数声明的关键字是fun,嗯,比JS的function还简单。
Kotlin中参数类型是放在变量:后面,函数返回类型也是。
funmax(a:Int,b:Int):Int{if(a>b){returna}else{returnb}}
当然, Kotlin是有类型推导功能,如果可以根据函数表达式推导出类型,也可以不写返回类型。
但是上面的还是有点繁琐,还能再简单,在 Kotlin中if是表达式,也就是有返回值的,因此可以直接return,另外判断式中只有一行一句也可以省略掉大括号:
funmax(a:Int,b:Int){returnif(a>b)aelseb}
还能在简单点吗?可以,if是表达式,那么就可以通过表达式函数体返回:
funmax(a:Int,b:Int)=if(a>b)aelseb
最终只需要一行代码。
关于“kotlin顶层函数和函数表达式怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。