【发布时间】:2022-01-08 19:37:18
【问题描述】:
假设我有一个数据列表val data = listOf("F 1", "D 2", "U 1", "D 3", "F 10"),我想对每个元素执行给定的逻辑。
我必须在外面添加var acc2 = 0 才能做到这一点。我想知道有没有可能让两个累加器折叠/减少这种方法没有副作用。
val data = listOf("F 1", "D 2", "U 1", "D 3", "F 10")
var acc2 = 0
val result = data.fold(0, { acc, str ->
when (str.split(" ")[0]) {
"F" -> {
acc + str.split(" ")[1].toInt() * acc2
}
"D" -> {
acc2 += str.split(" ")[1].toInt()
acc
}
"U" -> {
acc2 -= str.split(" ")[1].toInt()
acc
}
else -> {
acc
}
}
})
【问题讨论】:
-
只使用一对元组或其他复合累加器?
-
@Endzeit 正在讨论这个标记on Meta。
-
你有没有机会adventofcode.com/2021/day/2? :P
-
你说得对,我正在参与“代码的出现”,我已经解决了第 2 天,但我的解决方案并不如我所愿;)
标签: kotlin functional-programming