Доступ к имени переменной в лямбда-функции - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь получить доступ к имени переменной внутри итератора

listOf(someClassVariable, anotherClassVariable, yetAnotherClassVariable).forEach {
    if (it.foo()) {
        map.add(it, ::it.name)
    }
}

, но получаю ошибку unsupported [references to variables aren't supported yet] при ::it.name.Любые идеи / обходные пути?

1 Ответ

0 голосов
/ 20 февраля 2019

Вы можете сделать это наоборот, то есть иметь список ссылок на переменные вашего класса и перебирать их, а затем получить фактическое значение, вызвав для него invoke:

listOf(::someClassVariable, ::anotherClassVariable, ::yetAnotherClassVariable).forEach { varRef ->
    val varValue = varRef() // assignment optional... you can also just do it the way you want ;-)
    if (varValue.foo())
        map.add(varValue, varRef.name)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...