将上下文绑定到作用域函数以在Kotlin中创建函数引用?
如果我有以下两个函数,我可以将将上下文绑定到作用域函数以在Kotlin中创建函数引用?,kotlin,Kotlin,如果我有以下两个函数,我可以将alpha绑定到一个特定的字符串,并将其传递到另一个高阶函数,如图所示,但我想知道是否有更简洁的方法来实现这一点 fun foo(alpha: String.(Int, Int) -> Unit) { bar { x, y -> "george".alpha(x, y) } } fun bar(beta: (Int, Int) -> Unit) { // ... } 例如,我想知道是否有一些语法可以将“george”绑定到alp
alpha
绑定到一个特定的字符串,并将其传递到另一个高阶函数,如图所示,但我想知道是否有更简洁的方法来实现这一点
fun foo(alpha: String.(Int, Int) -> Unit) {
bar { x, y -> "george".alpha(x, y) }
}
fun bar(beta: (Int, Int) -> Unit) {
// ...
}
例如,我想知道是否有一些语法可以将“george”
绑定到alpha
,这样我就可以做类似的事情,避免创建一个新的lambda(如上所述),它只转发它的参数:
bar("george".bind(alpha))
PS如果我的术语完全错了,我道歉。当我在问题标题中提到一个作用域函数时,我说的是
alpha
,但这个术语可能是为apply
等保留的?可能不完全是您想要的,但是如果您在foo
中多次调用bar
,您可以使用一个内部函数使其更简洁:
fun foo(alpha: String.(Int, Int) -> Unit) {
fun String.alpha(x: Int, y: Int) = alpha(x, y)
bar("george"::alpha)
bar("georgina"::alpha)
}