關鍵字組合詳解

關鍵字(lateinit)詳解

lateinit(延遲初始化)

延遲初始化屬性:Kotlin要求非空類型的屬性必須要在構造方法中進行初始化。有時這種要求不太方便,比如可以通過依賴注入或是單元測試情況下進行屬性的賦值。

通過lateinit關鍵字滿足以下條件

  • lateinit只能用在類體中聲明的var屬性上,不能用在primary constructor聲明的屬性上
  • 屬性不能擁有自定義的setter與getter
  • 屬性類型需要爲非空,且不能是原生數據類型(Int,Float)
class Person{
    lateinit var name:String  //此處換成Int原生數據類型會報錯
    fun init(){
        this.name="張三"
    }
    fun print() {
        println(this.name)
    }
}
fun main(args: Array<String>) {
    var person=Person()
    person.init()
    person.print()
}

infix(中綴符號)

通過infix關鍵字滿足以下條件

  • 是成員函數或是擴展函數
  • 擁有單個參數
  • 聲明時使用infix關鍵字
class InfixTest(private var a:Int){
    infix fun add(b:Int)=this.a + b
}
fun main(args: Array<String>) {
    val infixTest =InfixTest(2)
    println(infixTest.add(5))
    println(infixTest add 5) //以上2種是等價的
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章