0

我想为我的自定义类使用变量和方法的扩展。我正在尝试下面的代码,但出现错误

不允许使用本地扩展属性

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"

如何使用扩展程序?我们可以在界面中使用扩展吗?

4

1 回答 1

4

您必须将这些声明从函数体移动到类体。与错误状态一样,不允许在本地定义扩展属性,而本地扩展方法是可以的。

所以在你的情况下,你可以这样做:

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,而无法在外部使用。

于 2017-06-22T08:11:20.533 回答