Kotlin中的扩展
问题描述:
我想为自定义类使用变量和方法的扩展。 我想下面的代码,但得到错误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"
如何使用扩展?我们可以在界面中使用扩展吗?
答
您必须将这些声明从函数体移到类体。像错误状态一样,不允许在本地定义扩展属性,而本地扩展方法可以。
所以你的情况,你可以这样做:
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
中使用的扩展性能,而在户外使用是不可能的。
可以添加示例以使用本地类的扩展名 –
可能是因为本地扩展属性不被允许(会导致问题,会是什么)? – Jesper
@Jesper我猜这些是不可能的。尽管我在网上找不到任何文档/原因。 – tynn