Используйте применить к классу данных в Kotlin - PullRequest
0 голосов
/ 28 мая 2019

Я знаю, как использовать функцию apply в обычном классе Kotlin, но я не смог использовать ее с классом данных:

data class Person(name: String)

val person = Person().apply {
    name = "Tony Stark" 
}

Я получаю сообщение компиляции:

Не передано значение для параметра 'name'

Ответы [ 2 ]

2 голосов
/ 28 мая 2019

Проблема в том, что name является только параметром конструктора и не имеет свойства, которое в любом случае недопустимо для концепции класса данных. Исправить так:

data class Person(val name: String)
1 голос
/ 28 мая 2019

Функция apply работает аналогично любому классу. Но в вашем фрагменте кода есть ошибки:

  1. Параметр в конструкторе Person не упоминается как var или val, поэтому в этом классе нет полей name. Было бы лучше сделать это var, чтобы иметь возможность изменять значение.
  2. Вы создали конструктор класса с 1 параметром, но пытаетесь использовать пустой конструктор - это ошибка.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...