Функция transform
Функция transform применяется к коллекциям и позволяет преобразовывать элементы с возможностью изменения их количества. В параметр функции передается лямбда-функция, которая определяет логику преобразования каждого элемента. Функция возвращает новую коллекцию с преобразованными элементами.
Синтаксис
inline fun <T, R> Iterable<T>.transform(
transform: (T) -> R
): List<R>
inline fun <T, R> Array<T>.transform(
transform: (T) -> R
): List<R>
Пример
Преобразуем массив чисел, умножив каждый элемент на 2:
val numbers = arrayOf(1, 2, 3, 4, 5)
val res = numbers.transform { it * 2 }
println(res)
Результат выполнения кода:
List<Int> [2, 4, 6, 8, 10]
Пример
Преобразуем список символов в их коды:
val chars = listOf('a', 'b', 'c', 'd', 'e')
val res = chars.transform { it.code }
println(res)
Результат выполнения кода:
List<Int> [97, 98, 99, 100, 101]
Пример
Преобразуем массив чисел в строки с префиксом:
val numbers = arrayOf(1, 2, 3)
val res = numbers.transform { "Number: $it" }
println(res)
Результат выполнения кода:
List<String> ['Number: 1', 'Number: 2', 'Number: 3']
Пример
Использование transform с изменением количества элементов (фильтрация отрицательных чисел):
val numbers = listOf(1, -2, 3, -4, 5)
val res = numbers.transform {
if (it > 0) it * 10 else null
}.filterNotNull()
println(res)
Результат выполнения кода:
List<Int> [10, 30, 50]
Пример
Преобразование вложенных коллекций с помощью transform:
val matrix = listOf(
listOf(1, 2, 3),
listOf(4, 5, 6),
listOf(7, 8, 9)
)
val res = matrix.transform { row ->
row.transform { it * it }
}
println(res)
Результат выполнения кода:
List<List<Int>> [[1, 4, 9], [16, 25, 36], [49, 64, 81]]