Шаг 15.
Основы Kotlin.
Переменные, константы и типы. Автоматическое определение типов

    На этом шаге мы рассмотрим особенность автоматического определения типов переменных.

    Обратите внимание, что типы, которые мы указали для переменных experiencePoints и playerName, выделены серым цветом в IntelliJ. Элементы, выделенные серым цветом, необязательны. Наведите указатель мыши на определение типа String, и IntelliJ объяснит, почему эти элементы необязательны (рисунок 1).


Рис.1. Избыточная информация о типе

    Как видите, Kotlin определил, что ваше объявление типа "избыточно". Что это значит?

    Kotlin поддерживает автоматическое определение типов, что позволяет опустить типы для переменных, которым присваиваются значения при объявлении. Так как при объявлении переменной playerName присваивается значение типа String и переменной experiencePoints присваивается значение типа Int, компилятор Kotlin автоматически определяет тип каждой переменной.

    Так же как IntelliJ помогает поменять var на val, она может помочь убрать ненужное объявление типа. Щелкните на объявлении типа String (: String) рядом с playerName и выберите Remove exclicit type specification или нажмите комбинацию клавиш Alt + Shift + Enter (рисунок 1). :String исчезнет. Повторите процесс для experiencePoints var, чтобы убрать :Int.

    Вне зависимости от того, используете вы возможность автоматического определения типов или указываете тип в объявлении каждой переменной, компилятор ведет учет типов. В дальнейшем мы будем использовать возможность автоматического определения типов, если это не создает двусмысленности. Это помогает придать коду аккуратный вид и упрощает его изменение в будущем.

    Обратите внимание, что IntelliJ покажет вам тип любой переменой по вашему запросу, даже если ее тип не был объявлен явно. Чтобы узнать тип переменной, задержите курсор мыши на переменной, или щелкните на ее имени и нажмите Ctrl + Shift + P. IntelliJ покажет ее тип (рисунок 2).


Рис.2. Вывод информации о типе

    На следующем шаге мы рассмотрим константы времени компиляции.




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