Kotlin Foreach循环未更新宽度

时间:2018-07-12 21:37:02

标签: foreach kotlin

Kotlin的新手,从事简单的圈子工作。我已经能够让两个圈子联系上我想要的方式,但是似乎可以进一步发展链条。似乎宽度(w2)在第一次迭代后没有得到更新。让我知道为什么我的代码不起作用以及如何改进它。 预先谢谢您:)保持苏醒!

val iterator = (0..12).iterator()
            if (iterator.hasNext()) {
                    canvas.drawCircle(w.toFloat(), h.toFloat(), (100).toFloat(),brush1)
                iterator.next()
            }
            iterator.forEach {
                val w2 = w-100
                canvas.drawCircle((w2).toFloat(), h.toFloat(), (100).toFloat(),brush1)


            }

这是我想要创造的效果


1 个答案:

答案 0 :(得分:2)

w2永远不会更改,因为它基于从未修改过的w

您可以使用提供给lambda(it)的参数来告诉您正在进行的迭代,而不必使用怪异的迭代器:

val x = 100 // starting x
val inc = 100 // offset for following circles
repeat(12){
    val targetX = x + inc * it
    canvas.drawCircle(targetX.toFloat(), y.toFloat(), 100.toFloat(), brush)
}