Шаг 16.
Основы Kotlin.
Переменные, константы и типы. Константы времени компиляции

    На этом шаге мы рассмотрим этот тип констант.

    Ранее мы рассказали о том, что vars могут менять свои значения, а vals нет. На самом деле это не совсем так. Иногда val может возвращать разные значения, и мы позже обсудим эти случаи. Если есть значения, которые вы абсолютно не хотите никогда и никак менять, рассмотрите константы времени компиляции.

    Константа времени компиляции объявляется вне какой-либо функции, даже не в пределах функции main(), потому что ее значение присваивается во время компиляции (в момент, когда программа компилируется) - отсюда и такое название. Функция main() и другие функции вызываются во время выполнения (когда программа запущена), и переменные внутри функций получают свои значения в этот период. Константа времени компиляции уже существует к этому моменту.

    Константы времени компиляции могут иметь значения только одного из следующих базовых типов - а использование более сложных типов может сделать компиляцию невозможной. О структуре типов мы будем говорить позже. Ниже перечислены поддерживаемые базовые типы для констант времени компиляции:

    Добавьте константу времени компиляции в TypeIntro.kt перед объявлением функции main(), использовав модификатор const.

const val MAX_EXPERIENCE: Int = 5000

fun main() {
    val playerName = "Estragon"
    var experiencePoints = 5
    experiencePoints += 5
    println(experiencePoints)
    println(playerName)
}
Файл с проектом можно взять здесь.


Рис.1. Задание константы

    Модификатор const, предшествующий val, предупреждает компилятор, что нужно следить за тем, чтобы это значение val нигде не изменялось. В этом случае константа MAX_EXPERIENCE гарантированно будет иметь целочисленное значение 5000, и ничто не сможет его изменить. Это поможет компилятору применить дополнительные оптимизации.

    Хотите узнать, почему имя для const val написано именно так: MAX_EXPERIENCE? Этот формат необязателен, однако мы предпочитаем выделять const val, используя только прописные буквы и заменяя пробелы на подчеркивания. Как вы могли заметить, определяя имена для vals или vars, мы используем верблюжий регистр, а также первую букву в нижнем регистре. Подобные соглашения об оформлении помогают писать ясный и легко читаемый код.

    На следующем шаге мы попытаемся поизучать байт-код Kotlin.




Предыдущий шаг Содержание Следующий шаг