首发于公众号: DSGtalk1989
18.函数
-
默认参数
override复写的方法不允许出现默认参数。 -
vararg
vararg关键字表示传入的是数组,如下的方法传入的是String字符串数组fun foo(vararg strings: String) { }如果我们需要通过指定的方式传入的话需要注意以下问题
fun main() { foo(strings = *arrayOf("a", "b", "c")) }strings指向的是String类型,如果不加上*,会报错。以此类推,我们有时候也可以直接在数组初始化中传入数组
val a = arrayOf(1, 2, 3) val list = asList(-1, 0, *a, 4) -
中缀表示法
我们在kotlin中可以使用一些自己命名的方法很好的处理一些事情。比如说系统为我们定了了操作符
>来判断左边的是否大于右边的。我们也可以自己实现infix fun Int.大于(b : Int) : Boolean{ return this > b }中缀关键字
infix用来修饰的函数只有两种,一种是上面的这种扩展函数,一种是成员函数。中缀函数的使用方式跟操作符是一样的,直接
a 中缀函数名 b,a和b都不可少,需要接受者和参数。举个成员函数的例子:class MyStringCollection { infix fun add(s: String) { …… } fun build() { this add "abc" // 正确 add("abc") // 正确 add "abc" // 错误:必须指定接收者 } } -
尾递归函数
关键字
tailrec用来表示尾递归函数,他有形式上的要求,就是描述的函数需要有有条件,且最终不断的执行自己。大致的格式如下tailrec fun againFun(x: Int) = if( x < 0) x else againFun(--x)