kotlin扩展方法访问另一个kt
我正在考虑在一个文件中添加一个全局扩展方法到字符串,无论我在哪里使用一个字符串,我总是可以使用这个扩展。
但我没有找到办法做到这一点…我只是现在到处粘贴扩展。
在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() }
您可以使用with
-function在定义的类之外使用成员扩展。 在传入的lambda中, this
将引用您传入的A
的实例。这将允许您使用A
定义的扩展函数。 喜欢这个:
val a = A() val s = "Some string" val result = with(a) { s.add1() } println(result) // Prints "Some string1"