Kotlin語法學習(下)

前言

之前寫過一篇Kotlin語法學習(上)https://blog.csdn.net/weixin_43615488/article/details/105952090,講述的是kotlin的基礎語法,這篇主要將kotlin的其他一些特性及用法

1. 標準函數with、run和apply

(1)with函數接收兩個參數,第一個參數可以是任意類型的對象,第二個參數是一個Lambda表達式。with函數會在Lambda表達式中提供第一個參數對象的上下文,並使用Lambda表達式的最後一行代碼作爲返回值返回

fun main(){
    val list = listOf("Apple","Banana","Pear","Orange")
    val result=with(StringBuilder()){
        append("Start eating fruits.\n")
        for(fruit in list){
            append(fruit).append("\n")
        }
        append("Ate all fruits.")
        toString()
    }
    println(result)
}

(2)run不能單獨使用,需要某個對象調用run,run函數只接收一個Lambda參數,並會在Lambda表達式中提供調用對象的上下文,並使用Lambda表達式的最後一行代碼作爲返回值返回,這點和with函數一樣

un main(){
    val list = listOf("Apple","Banana","Pear","Orange")
    val result=StringBuilder().run{
        append("Start eating fruits.\n")
        for(fruit in list){
            append(fruit).append("\n")
        }
        append("Ate all fruits.")
        toString()
    }
    println(result)
}

(3)apply函數和run類似,只是apply無法指定返回值,會自動返回對象本身

fun main(){
    val list = listOf("Apple","Banana","Pear","Orange")
    val result=StringBuilder().apply{
        append("Start eating fruits.\n")
        for(fruit in list){
            append(fruit).append("\n")
        }
        append("Ate all fruits.")
    }
    println(result.toString())
}

2. 定義靜態方法

(1)使用單例類,單例類中的方法即類似靜態方法

object Util{
    fun doAction(){
        
    }
}

(2)用 companion object塊

class Util{
   companion object{
       fun doAction(){
           
       }
   }
}

(3)頂層方法:頂層方法指那些沒有定義在任何類中的方法,它們即是靜態方法

3. 延遲初始化

private lateinit var adapter: AbstractThreadedSyncAdapter

延遲初始化使用的是lateinit關鍵字,它可以告訴Kotlin編譯器,我會在晚些時候對這個變量進行初始化,所以就不用在一開始的時候將它賦值爲null了,也避免使用的時候用?.去進行判空處理
::adapter.isInitialized可用於判斷adapter變量是否已經初始化

4. 擴展函數

下面是實現String類的擴展函數lettersCount()

fun String.lettersCount():Int{
    var count=0
    for(char in this){
        if(char.isLetter()){
            count++
        }
    }
    return count
}

除此之外,kotlin還有許多高級語法,像“密封類sealed class”、“運算符重載”、“高階函數”、“泛型”、“委託”、“協程”等

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