如果我具有以下两个函数,我可以将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))
如果我的术语完全错误,请道歉。当我在问题标题中引用 scope函数时是在谈论alpha
,但也许这个术语是为apply
等保留的?
答案 0 :(得分:0)
可能不完全是您想要的,但是如果您在bar
中多次调用foo
,则可以使用内部函数使其更加简洁:
fun foo(alpha: String.(Int, Int) -> Unit) {
fun String.alpha(x: Int, y: Int) = alpha(x, y)
bar("george"::alpha)
bar("georgina"::alpha)
}