Модификатор ‘const’ не применим к ‘локальной переменной’, почему?

#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. «Также возможно поместить его внутри сопутствующего объекта». Не просто компаньон.