Совместимы ли споты с Kotlin? - PullRequest
0 голосов
/ 21 мая 2018

При запуске плашек в проекте Kolin я получаю такие ошибки, как:

[ОШИБКА] Закрытый метод com.example.CSVRecord.component1 () никогда не вызывается [com.example.CSVRecord]. InCSVRecord.kt UPM_UNCALLED_PRIVATE_METHOD

в таких классах, как:

data class CSVRecord(private val columns: SortedSet<CSVColumn>) : Iterable<String> {

    override fun iterator(): Iterator<String> {
        return columns.map { it.value }.iterator()
    }
}

Мне не совсем понятно, откуда взялась component1!

1 Ответ

0 голосов
/ 21 мая 2018

Согласно документации Классы данных :

Компилятор автоматически извлекает следующие члены из всех свойств, объявленных в основном конструкторе:

  • пары equals () / hashCode ();
  • toString () в форме «Пользователь (имя = Джон, возраст = 42)»;
  • componentN () функции, соответствующие свойствам в ихпорядок объявления;
  • функция copy () (см. ниже).

Это одна из особенностей классов данных.Автоматически сгенерированные функции componentN позволяют вам использовать Объявления уничтожения для классов этого типа:

data class Result(val result: Int, val status: Status)
fun function(...): Result {
    // computations

    return Result(result, status)
}

// Now, to use this function:
val (result, status) = function(...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...