Расширения в Котлине

Я хочу использовать расширения для переменных и метода для моего пользовательского класса. Я пытаюсь под кодом, но получаю ошибку

Локальные свойства расширения не допускаются

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 , в то время как внешнее использование невозможно.