Звезда в Kotlin
Когда конкретный тип элементов не важен или
неизвестен, вместо имени типа ставят звездочку.
Класс List<*> читается как список чего-то,
без обещания, что это строки или числа.
Функция может принять любой список и вывести размер, не зная тип элемента:
fun printSize(row: List<*>) {
println(row.size)
}
fun main() {
printSize(listOf("a", "b"))
printSize(listOf(1, 2, 3))
}
Элемент, прочитанный по индексу, имеет тип
Any? - безопасный общий тип для
неизвестного содержимого. Добавление нового
значения в такой список запрещено: компилятор
не знает, какой тип там допустим:
fun firstLabel(row: List<*>): Any? {
return if (row.isEmpty()) null else row[0]
}
fun main() {
val mixed: List<*> = listOf("go", 10)
println(firstLabel(mixed))
}
Напишите функцию, которая принимает список
со звездочкой и возвращает последний элемент
или null для пустого списка. Проверьте
на списке из двух строк и выведите результат.
Напишите функцию, которая выводит сумму
длин строковых элементов списка со
звездочкой, пропуская нестроковые значения.
Для списка "io", 5, "api"
выведите ответ.