Dra*_*lea 8 kotlin kotlin-extension
我正在考虑在一个文件中为String 添加一个全局扩展方法,无论我在哪里使用String,我都可以使用这个扩展.
但我没有找到办法这样做...我现在只是粘贴扩展名.
在A.kt扩展:
class A{
......
fun String.add1(): String {
return this + "1"
}
......
}
Run Code Online (Sandbox Code Playgroud)
在B.kt中这样访问:
class B{
fun main(){
......
var a = ""
a.add1()
......
}
}
Run Code Online (Sandbox Code Playgroud)
我已经试过everyting我可以添加像static和final,但毫无效果.
zsm*_*b13 14
确保您的扩展函数是顶级函数,并且不嵌套在类中 - 否则它将是成员扩展,只能在它所在的类中访问:
package pckg1
fun String.add1(): String {
return this + "1"
}
Run Code Online (Sandbox Code Playgroud)
然后,如果你对它的使用是在不同的包中,你必须像这样导入它(这也应该由IDE建议):
package pckg2
import pckg1.add1
fun x() {
var a = ""
a.add1()
}
Run Code Online (Sandbox Code Playgroud)
mar*_*ran 10
您可以使用with-function在定义它的类之外使用成员扩展.在传递给lambda的内部with,this将引用A你传入的实例.这将允许你使用里面定义的扩展函数A.像这样:
val a = A()
val s = "Some string"
val result = with(a) {
s.add1()
}
println(result) // Prints "Some string1"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2134 次 |
| 最近记录: |