Как читать и увеличивать переменную Int экземпляра внешнего класса? - PullRequest
0 голосов
/ 05 июля 2019

Нормальное приращение работает в Kotlin так же, как в Java:

idCounter++

Однако, если idCounter является переменной внешнего класса, как применить оператор приращения?

idCounter@OuterClass++

не сработало и

idCounter++@OuterClass

Я также безуспешно возился с различными вариантами скобок.

1 Ответ

2 голосов
/ 05 июля 2019

Возможно, вы забыли использовать ключевое слово inner class для внутреннего класса.В отличие от Java, классы, объявленные внутри тела другого класса, по умолчанию static class.Вот почему вы не можете получить доступ к своей переменной.

Если вы использовали inner class и вам нужно использовать idCounter внешнего класса, потому что вы затеняли его во внутреннем классе, вы сможете получить к нему доступ, используяthis@OuterClass.idCounter:

class OuterClass{
    var idCounter = 0
    var notShadowed = 0

    inner class InnerClass{
        var idCounter = 0

        fun foo(){
            idCounter++                  // modifying counter of InnerClass
            this@OuterClass.idCounter++  // modifying counter of OuterClass
            notShadowed ++
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...