温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

kotlin顶层函数和函数表达式怎么用

发布时间:2021-12-29 16:15:10 来源:亿速云 阅读:156 作者:小新 栏目:互联网科技

这篇文章将为大家详细讲解有关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顶层函数和函数表达式怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI