1
比方說,我想要一個整數,提供square
方法。Kotlin的擴展函數如何工作?
科特林:
fun Int.square() = this * this
用法:
println("${20.square()}")
DOC:
擴展實際上沒有修改他們擴展類。通過定義一個擴展,你不需要在類中插入新的成員,而只需要使用這種類型的變量的點符號來調用新的函數。
我們想強調的是,擴展功能是靜態調度
我預計會一直認爲他們只是在編譯期間將其添加到擴展的類的成員函數,但是這是他們明確拒絕,所以我的下一個想法是,它可能是「有點」像斯卡拉implicits。
的Scala:
object IntExtensions{
implicit Class SquareableInt(i:Int){
def square = i*i
}
}
用法:
import IntExtensions._
然後
println(f"${20.square}")
DOC:
一個隱式類被剝離成類和隱式方法配對,其中implciit方法模仿類的構造函數。
生成的隱式方法將與隱式類具有相同的名稱。
但斯卡拉暗示創建一個新的類,這將禁用this
的使用。
那麼... Kotlin如何擴展類? 「打個招呼」並沒有給我太多的提示。