kotlin扩展方法在另一个kt中的访问
我正在考虑在一个文件中的字符串中添加一个全局扩展名方法,无论我在哪里使用字符串,我都可以使用这个扩展名 但是我没有找到这样做的方法…我现在只是到处粘贴扩展 在A.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(){ ......
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"