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
内部使用扩展属性,但不能在外部使用。
我想为我的自定义 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
内部使用扩展属性,但不能在外部使用。