Привязать контекст к функции области видимости, чтобы создать ссылку на функцию в Kotlin? - PullRequest
0 голосов
/ 24 октября 2019

Если у меня есть следующие две функции, я могу связать alpha с определенной строкой и передать ее другой функции высшего порядка, как показано, но мне интересно, есть ли более краткий способ сделать это?

fun foo(alpha: String.(Int, Int) -> Unit) {
    bar { x, y -> "george".alpha(x, y) }
}

fun bar(beta: (Int, Int) -> Unit) {
    // ...
}

Например, мне интересно, есть ли какой-нибудь синтаксис для привязки "george" к alpha, чтобы я мог сделать что-то подобное и избежать необходимости создавать новую лямбду (как выше), которая просто пересылает свои аргументы:

bar("george".bind(alpha))

PS Прошу прощения, если я неправильно понял мою терминологию. Это alpha, о котором я говорю, когда я ссылаюсь на функцию объема в заголовке вопроса, но, возможно, этот термин зарезервирован для apply и т. Д.

1 Ответ

0 голосов
/ 24 октября 2019

Может быть не совсем то, что вам нужно, но если вы звоните 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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...