Kotlin 中的扩展

Extensions in Kotlin

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

Local extension properties are not allowed

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"

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

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

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

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 内部使用扩展属性,但不能在外部使用。