Kotlin使用技巧(1)-->標準函數、靜態方法、常量

一、標準函數with、run、apply

標準函數是指在Standard.kt文件中定義的函數,任何的Kotlin代碼都可以自由的調用。
我們之前在[Kotlin基礎(8)-->空指針檢查(https://www.jianshu.com/p/3c1b53b239bf)已經學習了let標準函數,主要作用就是配合?.操作符來進行輔助判空處理,這裏就不再贅述了。

1.with函數

定義:with函數接收兩個參數,第一個可以是任意類型的對象,第二個是lambda表達式。with函數會在lambda表達式中提供第一個參數的上下文,並使用lambda表達式中的最後一行代碼最爲返回值返回
作用:可以在連續調用同一個對象的多個方法時讓代碼變得更加精簡
例子
原始代碼:

val list = listOf("Apple", "banana", "orange")
var builder = StringBuilder()
builder.append("start eat \n")
for (i in list) {
    builder.append("$i,\n")
}
builder.append("finish")
val result = builder.toString()
print(result)

使用with函數

val list = listOf("Apple", "banana", "orange")
val result= with(StringBuilder()){
    append("start eat \n")
    for (i in list) {
        append("$i,\n")
    }
    append("finish")
    toString()
}
print(result)
2.run函數

run函數使用場景和with十分相似。
區別是:(1)run函數是不能直接調用的,一定要調用某個對象的run函數纔行。(2)run函數只接受一個lambda參數。
例子:

val result = StringBuilder().run {
    append("start eat \n")
    for (i in list) {
        append("$i,\n")
    }
    append("finish")
    toString()
}
print(result)
3.apply函數

apply函數用法和run十分相似。
區別是:apply函數無法返回指定返回值,而是會自動返回調用對象本身
例子:

val list = listOf("Apple", "banana", "orange")
val result = StringBuilder().apply {
    append("start eat \n")
    for (i in list) {
        append("$i,\n")
    }
    append("finish")
}
print(result.toString())
3.repeat函數

repeat函數允許你傳入一個數值n,之後會把lambda表達式中的內容執行n遍。例:

repeat(3){
    print("Hi")
}
//輸出日誌:Hi Hi Hi

二、定義靜態方法

靜態方法又叫做類方法,指的是那種不需要創建實例就可以調用的方法。
Java中,只要在方法前聲明static關鍵字就是靜態方法。
Kotlin中並沒有直接定義的靜態方法的關鍵字,但是提供了一些語法特性來支持類似於靜態方法調用的寫法,基本可以滿足我們平時的需求了。

1.companion object

這個關鍵字實際上會在Util類的內部創建一個伴生類,而action2()方法就是定義在這個伴生類的實例方法。
Kotlin會保證Util類始終只會存在一個伴生類對象。調用Util.action2()方法實際上是調用了Util半身類對象的action2()方法。

class Util {
    fun action1() {}

    companion object {
        fun action2() {}
    }
}

調用

fun test() {
        Util.action2()
    }
2.定義靜態方法

Kotlin提供了兩種實現方式,註解和頂層方法

1.@JvmStatic註解

@JvmStatic註解只能加在單例類或者companion object中的方法上,如果加在一個普通方法上,會提示語法錯誤。例:

companion object {
        @JvmStatic
        fun action2() {}
    }

如此,Kotlin編譯器就會將這些方法編譯成真正的靜態方法。

2.頂層方法

頂層方法指的是那些沒有定義在任何類中的方法。
Kotlin編譯器會將所有的頂層方法全部編譯爲靜態方法。

定義一個頂層方法,就是創建一個Kotlin文件,類型選擇File。命名。
比如現在定義了一個文件名爲Helper.kt,裏面有doSomeThing()方法。Kotlin編譯器還會自動創建一個叫HelperKt的Java類。

如何調用頂層方法呢?
在Kotlin中:直接調用doSomeThing()方法。
在Java中:HelperKt.doSomeThing()

二、常量

定義常量的關鍵字是const
注意:只有在單例類、companion object或頂層方法中,纔可以使用const關鍵字

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章