Kotlin函数使用综述与显式返回类型分析

位置参数与具名参数:

继续接着上一次https://www.cnblogs.com/webor2006/p/11498842.html的方法参数学习,再定义一个函数来说明具名参数的问题:

Kotlin函数使用综述与显式返回类型分析

调用一下,先全部都指定参数肯定就会将默认值给替换掉了:

Kotlin函数使用综述与显式返回类型分析

Kotlin函数使用综述与显式返回类型分析

上面的这种方式其实是叫位置参数,接下来用具名的方式来指定参数:

Kotlin函数使用综述与显式返回类型分析

Kotlin函数使用综述与显式返回类型分析

下面再来看一个关于位置参数和具名参数的规则:“在调用函数时,如果同时使用了位置参数与具名参数,那么所有的位置参数都必须要位于第一个具名参数之前,比如说:foo(1, x=2)是允许的;而foo(x=1, 2)是不允许的。”

可变参数:

其实跟Java的类似,只是语法形式不太一样,下面看下代码:

Kotlin函数使用综述与显式返回类型分析

输出结果:

Kotlin函数使用综述与显式返回类型分析

这是跟Java一样的地方,而跟Java不一样的地方对于可变参数可以用一个数组传递过来,而在Kolin中如果想将数组传给可变参数就不行,如下:

Kotlin函数使用综述与显式返回类型分析

看下报错信息:

Kotlin函数使用综述与显式返回类型分析

这里其实需要分散运算符(spread operator)来指定,如下:

Kotlin函数使用综述与显式返回类型分析

Kotlin函数使用综述与显式返回类型分析

言外之意就是将数组里面的元素打散了,这样的话我们就可以将一个已经声明的数组做为可变参数进行传递了,如下:

Kotlin函数使用综述与显式返回类型分析

Kotlin函数使用综述与显式返回类型分析

但是有个特殊的情况需要注意:“在kotlin中调用Java方法时不能使用具名参数语法,因为Java字节码并不总是会保留方法参数名信息。”

函数定义:

对于Koltin中的函数定义其实学到这已经比较熟悉了,下面再来集中审视下它,先来定一个函数:

Kotlin函数使用综述与显式返回类型分析

上面是定义了接收一个参数,不返回值的函数,其中不返回值时是可以将Unit进行省略的,如下:

Kotlin函数使用综述与显式返回类型分析

其实该方法的完整写法应该是这样:

Kotlin函数使用综述与显式返回类型分析

那么这个Unit是个啥东东呢?跟进去看一下它的定义:

Kotlin函数使用综述与显式返回类型分析

下面再来看一个比较常有的函数定义:

Kotlin函数使用综述与显式返回类型分析

显示返回类型:

先看下它的定义:“拥有方法体的函数必须要显示指定返回类型,除非函数返回Unit,这时返回类型就可以省略掉。Koltin并不会推断拥有块体的函数的返回类型,因为这种函数可能有非常复杂的控制流程,返回类型对于阅读代码的人来说就不是那么明显了。(有时,对于编译器来说亦如此)”,比如说我们上一个方法是可以省略方法返回类型,如下:

Kotlin函数使用综述与显式返回类型分析

因为是一个很简单的表达式,比较容易推断方法的返回类型,但是如果将a + b写到方法体中就立马编译失败了:

Kotlin函数使用综述与显式返回类型分析

看下提示:

Kotlin函数使用综述与显式返回类型分析

此时就只能显示的指定方法的返回类型了:

Kotlin函数使用综述与显式返回类型分析

所以需要注意这个小细节。

上一篇:PostgreSQL配置文件--资源使用(除WAL外)


下一篇:Android中数据库Sqlite的性能优化