在lambda函数中访问变量名
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在lambda函数中访问变量名相关的知识,希望对你有一定的参考价值。
我正在尝试访问迭代器中的变量名称
listOf(someClassVariable, anotherClassVariable, yetAnotherClassVariable).forEach {
if (it.foo()) {
map.add(it, ::it.name)
}
}
但在unsupported [references to variables aren't supported yet]
得到::it.name
错误。任何想法/解决方法?
答案
您可以反之亦然,即拥有对类变量的引用列表并迭代它们,然后通过调用它来获取实际值:
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)
}
以上是关于在lambda函数中访问变量名的主要内容,如果未能解决你的问题,请参考以下文章
39 py函数作用域递归函数 变量作用域局部函数 使用lambda