Kotlin学习笔记之 18 函数
2019-04-10 本文已影响2人
super_shanks
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)