Расширение списка в Kotlin
Функция-расширение для списка объявляется с типом
List и параметрами элемента в угловых скобках.
В this лежит сам список - его можно обходить
в for и читать через size и индекс:
fun List<Int>.sumPositive(): Int {
var total = 0
for (num in this) {
if (num > 0) {
total += num
}
}
return total
}
fun main() {
val nums = listOf(3, -1, 4, 0, 2)
println(nums.sumPositive())
}
Исходный список не меняется - расширение только считает результат. Для списка строк подойдет тот же прием:
fun List<String>.countLong(): Int {
var cnt = 0
for (word in this) {
if (word.length > 3) {
cnt++
}
}
return cnt
}
fun main() {
val tags = listOf("go", "kotlin", "io")
println(tags.countLong())
}
Объявите функцию sumPositive для
List<Int>. Для списка
listOf(1, -2, 3, 4) выведите сумму
положительных элементов.
Объявите функцию countZeros для
List<Int>. Она возвращает, сколько
раз в списке встречается 0. Проверьте
список listOf(0, 5, 0, 1) и выведите
ответ.