Kotlin多层参考

时间:2017-12-18 17:34:17

标签: android lambda kotlin

你如何引用第二层"它"从第三层开始而不创建新的val / var?我知道你可以做val mydata =它然后做mydata.id.toString()我只是想知道Kotlin中有什么东西可以让我从更高的层次引用它吗?

 npm install

1 个答案:

答案 0 :(得分:6)

不,it符号始终引用最内层的隐式单个lambda参数。

要解决此问题,并提高代码可读性,请在每次使用参数嵌套lambda时使用named lambda parameters,如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())
        })
    }
}