kotlin扩展方法在另一个kt中的访问

kotlin扩展方法在另一个kt中的访问,kotlin,kotlin-extension,Kotlin,Kotlin Extension,我正在考虑在一个文件中的字符串中添加一个全局扩展名方法,无论我在哪里使用字符串,我都可以使用这个扩展名 但是我没有找到这样做的方法…我现在只是到处粘贴扩展 在A.kt中的扩展: class A{ ...... fun String.add1(): String { return this + "1" } ...... } 在B.kt中,可以这样访问: class B{ fun main(){ ......

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

但是我没有找到这样做的方法…我现在只是到处粘贴扩展

在A.kt中的扩展:

class A{
    ......
    fun String.add1(): String {
        return this + "1"
    }
    ......
}
在B.kt中,可以这样访问:

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

我已经尝试了所有我可以添加的东西,比如
static
final
,但是没有任何效果。

确保扩展函数是a,并且没有嵌套在类中-否则它将是a,只能在它所在的类中访问:

package pckg1

fun String.add1(): String {
    return this + "1"
}
然后,如果您在另一个包中使用它,您必须像这样导入它(IDE也应该建议这样做):


您可以使用
with
-函数在定义成员扩展的类之外使用该扩展。在使用传递给
的lambda中,
将引用传入的
A
的实例。这将允许您使用
A
中定义的扩展函数。像这样:

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

嘿,这绝对有效。你在用这个主意吗?没有关于导入的建议吗?@zsmb13我正在使用Android Studio和kotlin插件版本1.1.3-2,没有导入建议,它说未解决的引用您可以使用在其他文件中声明的类吗?@zsmb13是的,我可以告诉您确切的错误消息吗?只是扩展名上的“未解析引用”吗?我在一个类中编写了扩展名!这就是我失败的原因!这里也是,在类中:)
val a =  A()
val s = "Some string"
val result = with(a) {
    s.add1()
}
println(result) // Prints "Some string1"