在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

在lambda函数中访问周围变量时出错

Python匿名函数lambda是什么?为什么要匿名?怎么用?

JavaScript ES6 的let和const

lambda函数访问外部变量

Lambda演算归约!归约!归约!