我有以下情况
someThing.forEach{
someWidget.setOnClickListener{
//it is an View
//I need foreach it of someObject
}
}
我读了这个答案,但是它不起作用
kotlin how to refer outer-scope this in multi-layer apply functions
答案 0 :(得分:2)
问题在于您在这里没有处理 | beam.io.WriteStringsToPubSub(TOPIC)
。
this
有一个参数,为简单起见,您可以将其保留,而只需使用forEach
。不使用它与使用it
相同……只是将其丢弃。
因此,您的示例使用命名的lambda参数代替:
_ ->
答案 1 :(得分:0)
您可以在forEach中命名该变量。
things.forEach { thing ->
someWidget.setOnClickListener {
thing.doSomething()
}
}
答案 2 :(得分:0)
我认为您的意思是这样的:
someThing.forEach{ x->
someWidget.setOnClickListener{
//use x
//I need foreach it of someObject
}
}
只需使用另一个名称,例如x
,就不必使用it
。
这是一个示例:
val a = mutableListOf<Int>(1, 3)
val b = mutableListOf<Int>(2, 4)
a.forEach { x ->
b.forEach {
println("" + x + " " + it)
}
}
这里x
是列表a
中的每个项目
it
是列表b