Я знаю, как использовать функцию применения в обычном классе Kotlin, но не смог использовать ее с классом данных:
data class Person(name: String)
val person = Person().apply {
name = "Tony Stark"
}
Я получаю сообщение о компиляции:
No value passed for parameter 'name'
Проблема в том, что name
является только параметром конструктора и не является свойством, что в любом случае недопустимо для концепции класса данных. Исправить так:
data class Person(val name: String)
Функция apply
работает одинаково с любым классом. Но в вашем фрагменте кода есть некоторые ошибки:
Person
не упоминается как var
или val
, поэтому в этом классе нет полей name
. Лучше бы это сделали var
чтобы можно было менять значение.