如何在Kotlin的forEach上引用外部

时间:2018-11-13 16:33:21

标签: android lambda kotlin

我有以下情况

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

3 个答案:

答案 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

中的每个项目