Почему невозможно использовать параметр конструктора (не свойство) напрямую в качестве переменных для функции-члена? - PullRequest
0 голосов
/ 02 февраля 2020

Следующий пример опишет мое недоразумение лучше всего:

class myExampleClass (
    myString: String,
    val myInt: Int,
) {

    fun memberFunction() {
        val memberFunctionValA = myString // does not work
        val memberFunctionValB = myInt // does work
    }
}

Есть ли конкретная c причина? Всегда ли мы должны объявлять параметры как свойства, чтобы использовать их внутри класса?

1 Ответ

2 голосов
/ 02 февраля 2020

Для объявления свойств и их инициализации из основного конструктора, Kotlin имеет краткий синтаксис:

class Person(val firstName: String, val lastName: String, var age: Int) { /*...*/ }

Я нашел это на https://kotlinlang.org/docs/reference/classes.html Насколько я понимаю вы пропустили ключевое слово val в первом параметре.

class myExampleClass (
    val myString: String,        // this might work
    val myInt: Int,
) {

    fun memberFunction() {
        val memberFunctionValA = myString // does not work
        val memberFunctionValB = myInt // does work
    }
}
...