kotlin扩展方法访问另一个kt

我正在考虑在一个文件中添加一个全局扩展方法到字符串,无论我在哪里使用一个字符串,我总是可以使用这个扩展。

但我没有找到办法做到这一点…我只是现在到处粘贴扩展。

在A.kt中的扩展:

class A{ ...... fun String.add1(): String { return this + "1" } ...... } 

并在B.kt中访问像这样:

 class B{ fun main(){ ...... var a = "" a.add1() ...... } } 

我试过每一个我可以添加像staticfinal但没有任何工作。

确保你的扩展函数是顶层函数 ,而不是嵌套在一个类中 – 否则它将是一个成员扩展 ,它只能在类的内部访问:

 package pckg1 fun String.add1(): String { return this + "1" } 

然后,如果你的使用是在不同的包中,你必须像这样导入它(这也应该由IDE建议):

 package pckg2 import pckg1.add1 fun x() { var a = "" a.add1() } 

您可以使用with -function在定义的类之外使用成员扩展。 在传入的lambda中, this将引用您传入的A的实例。这将允许您使用A定义的扩展函数。 喜欢这个:

 val a = A() val s = "Some string" val result = with(a) { s.add1() } println(result) // Prints "Some string1"