Я думаю о добавлении глобального метода расширения в String только в одном файле, и везде, где я использую String, я всегда могу использовать это расширение.
Но я не смог найти способ сделать это … Я просто вставляю расширение всюду сейчас.
расширение здесь в A.kt:
class A{ ...... fun String.add1(): String { return this + "1" } ...... }
и получить доступ, как это в B.kt:
class B{ fun main(){ ...... var a = "" a.add1() ...... } }
Я пробовал все, что могу добавить как static
и final
но ничего не получилось.
Убедитесь, что ваша функция расширения является функцией верхнего уровня и не вложена в класс – в противном случае это будет расширение члена , доступное только внутри класса, в котором он находится:
package pckg1 fun String.add1(): String { return this + "1" }
Затем, если вы используете его в другом пакете, вам необходимо импортировать его так (это также должно быть предложено IDE):
package pckg2 import pckg1.add1 fun x() { var a = "" a.add1() }
Вы можете использовать функцию -function для использования расширения члена вне класса, где он был определен. Внутри лямбды, пройденной with
, this
будет относиться к экземпляру A
вы проходите. Это позволит вам использовать функции расширения, определенные внутри A
Как это:
val a = A() val s = "Some string" val result = with(a) { s.add1() } println(result) // Prints "Some string1"