2017-06-22 106 views
-1

我想爲自定義類使用變量和方法的擴展。 我想下面的代碼,但得到錯誤Kotlin中的擴展

本地擴展屬性是不允許

val Double.km: Double get() = this * 1000 
val Double.m: Double get() = this 
val Double.cm: Double get() = this/100 
val Double.mm: Double get() = this/1000 
val Double.ft: Double get() = this/3.28084 

val oneInch = 25.4.mm 
println("One inch is $oneInch meters") 
// prints "One inch is 0.0254 meters" 
val threeFeet = 3.0.ft 
println("Three feet is $threeFeet meters") 
// prints "Three feet is 0.914399970739201 meters" 

如何使用擴展?我們可以在界面中使用擴展嗎?

回答

3

您必須將這些聲明從函數體移到類體。像錯誤狀態一樣,不允許在本地定義擴展屬性,而本地擴展方法可以。

所以你的情況,你可以這樣做:

class MainClass { 
    val Double.km: Double get() = this * 1000 
    val Double.m: Double get() = this 
    val Double.cm: Double get() = this/100 
    val Double.mm: Double get() = this/1000 
    val Double.ft: Double get() = this/3.28084 

    fun run() { 
     val oneInch = 25.4.mm 
     println("One inch is $oneInch meters") 
    } 
} 

您可以從MainClass中使用的擴展性能,而在戶外使用是不可能的。

+0

可以添加示例以使用本地類的擴展名 –

+0

可能是因爲本地擴展屬性不被允許(會導致問題,會是什麼)? – Jesper

+1

@Jesper我猜這些是不可能的。儘管我在網上找不到任何文檔/原因。 – tynn

相關問題