#android #kotlin #scope #constants
#Android #kotlin #область видимости #константы
Вопрос:
Когда я пытаюсь вставить const val
подобное:
const val DRAWABLE_RIGHT : Int = 2
внутри метода я получаю сообщение об ошибке:
Модификатор ‘const’ неприменим к ‘локальной переменной’
И когда я перемещаю это const val
в начало класса, например:
class MyClass @JvmOverloads constructor(context: Context) : ConstraintLayout(context) {
const val DRAWABLE_RIGHT : Int = 2
...
}
компилятор говорит, что это все еще неверно:
Const ‘val’ разрешены только на верхнем уровне или в объектах
Что это значит top level
?
Ответ №1:
Верхний уровень означает, что вы должны поместить переменную за пределы класса.
Его также можно поместить внутрь сопутствующего объекта.
Комментарии:
1. Верхний уровень означает вне любого определения класса. В сообщении говорится «или в объектах», чтобы описать другой допустимый случай. Вызов членов объекта «верхнего уровня» был бы неправильным.
2. «Также возможно поместить его внутри сопутствующего объекта». Не просто компаньон.