如何在不创建新的 val/var 的情况下从第三层引用第二层“it”?我知道您可以执行 val mydata = it 然后执行 mydata.id.toString() 我只是想知道 Kotlin 中是否有一些东西可以让我从更高级别引用它?
data.arrayresults.forEach {
val result = it
result.myData.let {
val itemView - inflater.inflate(R.layout.somelayout)
itemView.setOnClickListener(View.OnClickListener {
// the it references the view but I want it to reference the result.myData
SomeActivity.startActivity(context, it.id.toString())
})
}
}
最佳答案
不,it
符号总是引用最内层的隐式单个 lambda 参数。
要解决此问题并提高代码的可读性,请使用 named lambda parameters每次嵌套带有参数的 lambda 时,如 Coding conventions 中所建议的那样:
data.arrayresults.forEach { result ->
result.myData.let { myData ->
val itemView - inflater.inflate(R.layout.somelayout)
itemView.setOnClickListener(View.OnClickListener { view ->
// the it references the view but I want it to reference the result.myData
SomeActivity.startActivity(context, myData.id.toString())
})
}
}
关于android - Kotlin 多层 IT 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47873589/