首發(fā)于公眾號: DSGtalk1989
18.函數(shù)
-
默認參數(shù)
override
復寫的方法不允許出現(xiàn)默認參數(shù)。 -
vararg
vararg
關鍵字表示傳入的是數(shù)組,如下的方法傳入的是String
字符串數(shù)組fun foo(vararg strings: String) { }
如果我們需要通過指定的方式傳入的話需要注意以下問題
fun main() { foo(strings = *arrayOf("a", "b", "c")) }
strings
指向的是String
類型,如果不加上*
,會報錯。以此類推,我們有時候也可以直接在數(shù)組初始化中傳入數(shù)組
val a = arrayOf(1, 2, 3) val list = asList(-1, 0, *a, 4)
-
中綴表示法
我們在kotlin中可以使用一些自己命名的方法很好的處理一些事情。比如說系統(tǒng)為我們定了了操作符
>
來判斷左邊的是否大于右邊的。我們也可以自己實現(xiàn)infix fun Int.大于(b : Int) : Boolean{ return this > b }
中綴關鍵字
infix
用來修飾的函數(shù)只有兩種,一種是上面的這種擴展函數(shù),一種是成員函數(shù)。中綴函數(shù)的使用方式跟操作符是一樣的,直接
a 中綴函數(shù)名 b
,a
和b
都不可少,需要接受者和參數(shù)。舉個成員函數(shù)的例子:class MyStringCollection { infix fun add(s: String) { …… } fun build() { this add "abc" // 正確 add("abc") // 正確 add "abc" // 錯誤:必須指定接收者 } }
-
尾遞歸函數(shù)
關鍵字
tailrec
用來表示尾遞歸函數(shù),他有形式上的要求,就是描述的函數(shù)需要有有條件,且最終不斷的執(zhí)行自己。大致的格式如下tailrec fun againFun(x: Int) = if( x < 0) x else againFun(--x)
Kotlin學習筆記之 9 數(shù)據(jù)類與密封類
Kotlin學習筆記之 13 基礎操作符run、with、let、also、apply
Kotlin學習筆記之 19 高階函數(shù)與 lambda 表達式
Kotlin學習筆記之 20 內聯(lián)函數(shù)