普通函數
fun name(str : String) : String { }
fun 函數名(參數名 : 參數類型) : 返回類型 { }
通常未加任何修飾詞的函數是public
的,你也可以給前面加上private
無返回值
fun name(str : String) : Unit { }
Unit相當于java中的void
函數默認值
private fun name(str: String, it : Int = 2): Unit{ }
這時it
就有一個默認的值為2,你可以這樣調用name(s)
也可以name(s,5)
那么5就會覆蓋默認值2,這個很好。可以少寫很多相似的方法
通過參數直接返回值
fun name(it1: Int, it2 : Int): Int = it1+it2
這應該一看就懂了吧,返回類型為Int,通過傳入的it1+it2
直接返回結果。
擴展函數
fun String.replaceF(s : String) : String{ return s.replace(",",""); }
這是對某個類直接進行擴展,不需要使用繼承的方式,可以直接進行使用:var s: String = toString(); s.replaceF("")
可以當做擴展類也可以當作工具類來使用。這個功能很強大
PS:這個一開始被坑了真的。坑的不是kotlin,而是網上大部分的博客,因為沒提及一個關鍵的地方,就是擴展函數的文件類型必須是File。?像這樣
類中是沒有class abstract這些的。就是一個File文件
內聯函數
inline fun String.replaceF(s: String): String { return s.replace(",", ""); }
其實就是在普通的函數前加上inline
關鍵字,它的作用是在編譯時將函數代碼與調用的地方替換,就如函數內部代碼是直接寫在調用的地方一樣。而普通的函數在調用時會在內部生成臨時的對像。所以使用內聯函數可以避免一定的內存開銷。但同樣的,因為會在編譯時進行代碼的替換所以使用濫用的話會讓編譯的時間進行增加。