Kotlin: почему * неразрешенная ссылка * для параметра конструктора подкласса запечатанного класса - PullRequest
1 голос
/ 29 февраля 2020
sealed class Person () {
    data class Man (val name: String): Person()
    data class Woman (val name: String): Person() 

    fun stringOf(): String {
    return when (this) {
        is Person.Man -> "Mr "+this.name
        is Person.Woman -> "Mrs "+this.name
    }
    } // works fine

    fun nameOf() : String {
        return this.name // error: unresolved reference: name
    }
}

fun main(args: Array<String>) {
    val man = Person.Man("John Smith")
    println (man.stringOf()) 
}

Почему код выше дает ошибка: неразрешенная ссылка: имя для функции nameOf и работает правильно для функции stringOf , которая выглядит очень похоже.

1 Ответ

1 голос
/ 29 февраля 2020

Поскольку свойство name не определено в классе Person. Все name s находятся в подклассах, поэтому функция nameOf в родительском классе не может получить к ней доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...