use*_*019 1 lambda android kotlin
我有一个包含 30 个随机数的列表,它们对应于 8 种颜色中的一种,我需要遍历 8 种颜色(或 30 个数字)并找到每种颜色出现的次数。我需要使用 lambdas 和函数式编程来做到这一点,所以没有传统的 for 循环。
val iterator = colours.toList().iterator()
iterator.forEach{
println("$it count: " + (numbers
.map{a -> colours[a]}
.count{it == ("$it")}))
}
Run Code Online (Sandbox Code Playgroud)
目前的问题是我的计数输出仅为 50,而不是颜色出现的具体次数。
如果我这样做:
println("Red count:" + (numbers
.map{a -> colours[a]}
.count{it == ("red")}))
Run Code Online (Sandbox Code Playgroud)
它输出正确的数字,但不是循环。
它输出什么:
green count: 50
red count: 50
Run Code Online (Sandbox Code Playgroud)
它应该输出什么(例如)
green count:9
red count:3
Run Code Online (Sandbox Code Playgroud)
提前致谢
将命名参数添加到您的 forEach 循环。隐含的名称“it”被 count 函数遮住了。
val iterator = colours.toList().iterator()
iterator.forEach { colour ->
println("$colour count: " + (numbers
.map{a -> colours[a]}
.count{it == ("$colour")}))
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4903 次 |
| 最近记录: |