Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将上下文绑定到作用域函数以在Kotlin中创建函数引用?_Kotlin - Fatal编程技术网

将上下文绑定到作用域函数以在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)
}