Intereting Posts
Создание регистратора на уровне пакета без класса ссылка на конструктор вызовов в Котлине Предоставление общего экземпляра в Kotlin & Guice Программно изменять ориентацию меню кланов Присвоить лямбда непосредственно унаследованному абстрактному методу Как написать пользовательский getter, если свойства класса определены в конструкторе? Robolectric addResolveInfoForIntent не работает Kotlin прямой доступ к Button в android.support.v4.app.Fragment ссылка на нулевой объект Вернуть пустой результат в запрос QueryRecyclerAdapter Какую ниже технологию я должен узнать теперь, когда разработчик Android будет использовать лучшие возможности в ближайшие дни? Класс Kotlin на eclipse действует странно, каждый раз, когда я запускаю программу, я получаю вывод из другого файла java https: // localhost (SSL) – возможно без установки сертификатов на клиенте? Тип тестового элемента контейнера в котлине Запуск интерфейса в Kotlin для Android kotlin, как упростить передачу параметров в конструктор базового класса?

доступ к расширению kotlin в другом kt

Я думаю о добавлении глобального метода расширения в 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"