Builder-функции создают объект через mutable receiver и возвращают read-only результат.
Разбор
- Меньше аллокаций промежуточных конкатенаций.
- Читаемый DSL-стиль.
buildMap { put(k,v) }.
- Идиоматичная альтернатива StringBuilder вручную.
Пример
val csv = buildString {
append("id,name\n")
users.forEach { append(it.id).append(',').appendLine(it.name) }
}
Итог
build* API — стандартный способ собрать коллекции/строки.