由于Kotlin函数也被视为数据类型,我想知道是否可以将该函数注入,然后可以将其传递给其他方法。我的意思是使该功能可注射fn: (data) -> Component
,然后将其传递给方法
是,您可以使用::
运算符引用将创建KFunction1<data, Component>
的功能,该功能在kotlin中被视为(data) -> Component
或data.() -> Component
。
示例:
fun acceptLambda(block: (String) -> Unit) {
block("Test")
}
// Create function having same argument and return type
// Both of them in same package won't work use either of these
fun String.t1() {
println(this)
}
fun t2(s: String) {
println(s)
}
// Call them, by passing the reference
test(String::t1) // Prints: Test
test(::t2) // Prints: Test
要注意的是,如果您在任何类中都将扩展函数创建为成员函数(就像t1
一样,则无法引用它,因此我建议您改用t2之类的函数。
Here有关如何引用构造函数或成员函数的更多信息。