Junior — Middle
Kas on võimalik kasutada forEach, et arvutada koguarv väärtuste kogus võtme-väärtuse paaride kogumis Kotlinis?
sobes.tech AI
Vastus AI-lt
Kotlinis saate kasutada forEach, et läbida võtme-väärtuse paare sisaldav kogum, kuid arvuliste väärtuste summa arvutamiseks ei ole see kõige mugavam ja idiomaatilisem viis. forEach ei tagasta tulemust, seega peate looma välise loendurimuutuja ja muutma seda lambda sees, mis ei ole alati mugav ning võib põhjustada vigu.
Parema valikuna on kasutada kõrgema taseme funktsioone, näiteks sumOf, mis summeerib otse väärtused vastavalt antud kriteeriumile:
val map = mapOf("a" to 10, "b" to 20, "c" to 30)
val sum = map.values.sum() // või map.sumOf { it.value }
println(sum) // 60
Kui kasutate forEach, näide oleks selline:
var sum = 0
map.forEach { (_, value) ->
sum += value
}
println(sum)
Kuid koodi selguse ja loetavuse huvides on parem kasutada sumOf või sum.