Kotlin學習筆記之 18 函式
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)