我想在多个类中使用此函数:
fun <T> T?.ifNull(function: (T?, s:String) -> Unit) {
}
我该如何做到这一点?
这就是我想用它的方式:
class A{
fun <T> T?.ifNull(function: (T?, s:String) -> Unit) {
}
}
class B{
constructor(){
val a = A()
//I want to use the function here
}}
答案 0 :(得分:13)
如果将扩展函数定义为类A
的成员,则该扩展函数仅在A
的上下文中可用。这意味着,您当然可以直接在A
内使用它。但是,从另一个班级B
,它不是直接可见的。 Kotlin所谓的范围函数,如with
,可用于将您的类带入A
的范围。以下演示了如何在B
内调用扩展函数:
class B {
init {
with(A()) {
"anything".ifNull { it, s -> }
}
}
}
作为替代方案,这主要是推荐的方法,您可以在顶层定义扩展函数,即直接在文件中定义:
fun <T> T?.ifNull(function: (T?, s: String) -> Unit) {
}
class A {
init {
"anythingA".ifNull { it, s -> }
}
}
class B {
init {
"anythingB".ifNull { it, s -> }
}
}