Ключевые слова и операторы
Ключевые слова
Следующие токены всегда интерпретируются как ключевые слова и не могут использоваться в качестве идентификаторов:
-
asиспользуется для преобразования типов.
указывается псевдоним для импорта
as?используется для безопасного преобразования типов.breakпрерывает выполнение цикла.classобъявляет класс.continueпереходит к следующей итерации ближайшего вложенного цикла.doначинает цикл do/while (цикл с постусловием).elseопределяет ветвь выражения if, которая выполняется, если условие ложно.falseзадаёт значение 'false' типа Boolean.forначинает цикл for.funобъявляет функцию.ifначинает выражение if.-
inуказывает объект, по которому происходит итерация в цикле for.
используется как инфиксный оператор для проверки принадлежности значения диапазону, коллекции или другому элементу, который определяет метод 'contains'.
используется в выражениях when с той же целью.
помечает параметр типа как контравариантный.
-
!inиспользуется как оператор для проверки того, что значение НЕ принадлежит диапазону, коллекции или другому элементу, который определяет метод 'contains'.
используется в выражениях when для той же цели.
interfaceобъявляет интерфейс.-
isпроверяет, что значение имеет определенный тип.
используется в выражениях when для этой же цели.
-
!isпроверяет, что значение не имеет определенного типа.
используется в выражениях when для этой же цели.
null- константа, представляющая ссылку на объект, не ссылающуюся ни на один объект.objectобъявляет класс и его экземпляр одновременно.packageуказывает пакет для текущего файла.returnвозвращает управление из ближайшей функции или анонимной функции.-
super -
this throwвыбрасывает исключение.trueзадаёт значение 'true' типа Boolean.typealiasобъявляет псевдоним типа.typeofзарезервировано для будущего использования.valобъявляет неизменяемое свойство или локальную переменную.varобъявляет изменяемое свойство или локальную переменную.whenначинает выражение when (выполняет одну из заданных ветвей).whileначинает цикл while (цикл с предусловием).
Ключевые слова
Следующие токены действуют как ключевые слова в контексте их применения, и их можно использовать как идентификаторы в других контекстах:
-
by catchоткрывает блок, который обрабатывает определенный тип исключения.constructorобъявляет первичный или вторичный конструктор.delegateиспользуется как цель применения аннотации.dynamicссылается на динамический тип в коде Kotlin/JS.fieldиспользуется как цель применения аннотации.fileиспользуется как цель применения аннотации.finallyоткрывает блок, который всегда выполняется при выходе из блока try.-
getобъявляет получатель свойства.
используется как цель применения аннотации.
importимпортирует объявление из другого пакета в текущий файл.initоткрывает блок инициализации.paramиспользуется как цель применения аннотации.propertyиспользуется как цель применения аннотации.receiverиспользуется как цель применения аннотации.-
setобъявляет установщик свойства.
используется как цель применения аннотации.
setparamиспользуется как цель применения аннотации.valueс ключевым словомclassобъявляет встроенный класс.whereопределяет ограничения для параметра дженерика.
Ключевые слова модификатора
Следующие токены действуют как ключевые слова в списках модификаторов объявлений, и их можно использовать как идентификаторы в других контекстах:
abstractпомечает класс или член как абстрактный.actualобозначает платформенно-специфическую реализацию в проектах с поддержкой нескольких платформ.annotationобъявляет класс аннотаций.companionобъявляет компаньон-объект.constпомечает свойство как константу времени компиляции.crossinlineзапрещает нелокальные возвращения в лямбда-выражении, переданном встроенной функции.dataсообщает компилятору о генерации стандартных членов для класса.enumобъявляет перечисление.expectпомечает объявление как платформенно-специфическое, ожидая реализацию в модулях платформы.externalпомечает объявление как реализованное вне Kotlin (доступное через JNI или в JavaScript).finalзапрещает переопределение члена.infixразрешает вызывать функцию с использованием инфиксной нотации.inlineсообщает компилятору о встраивании функции и лямбда-выражений, переданных ей, в месте вызова.innerразрешает обращение к экземпляру внешнего класса из вложенного класса.internalпомечает объявление как видимое в текущем модуле.lateinitразрешает инициализацию не-null свойства вне конструктора.noinlineотключает встраивание лямбда-выражения, переданного встроенной функции.openразрешает наследование от класса или переопределение члена.operatorпомечает функцию как перегрузку оператора или реализацию соглашения.outпомечает параметр типа как ковариантный.overrideпомечает член как переопределение члена суперкласса.privateпомечает объявление как видимое в текущем классе или файле.protectedпомечает объявление как видимое в текущем классе и его подклассах.publicпомечает объявление как видимое в любом месте.reifiedпомечает параметр типа встроенной функции как доступный во время выполнения.sealedобъявляет запечатанный класс (класс с ограниченным наследованием).suspendпомечает функцию или лямбда-выражение как отложенное (используемое в качестве корутины).tailrecпомечает функцию как хвосторекурсивную (разрешая компилятору заменить рекурсию итерацией).varargразрешает передачу переменного количества аргументов для параметра.
Специальные идентификаторы
Следующие идентификаторы определяются компилятором в конкретных контекстах, и их можно использовать как обычные идентификаторы в других контекстах:
fieldиспользуется внутри аксессора свойства для ссылки на поддерживающее поле свойства.itиспользуется внутри лямбда-выражения для неявной ссылки на его параметр.
Операторы и специальные символы
Kotlin поддерживает следующие операторы и специальные символы:
-
+,-,*,/,%- математические операторы*также используется для передачи массива в параметр vararg.
-
=оператор присваивания.
используется для указания значений по умолчанию для параметров.
+=,-=,*=,/=,%=- операторы расширенного присваивания.++,--- операторы инкремента и декремента.&&,||,!- логические операторы 'и', 'или', 'не' (для побитовых операций используйте соответствующие инфиксные функции).==,!=- операторы сравнения на равенство (преобразуются в вызовыequals()для не примитивных типов).===,!==- операторы ссылочной эквивалентности.<,>,<=,>=- операторы сравнения (преобразуются в вызовыcompareTo()для не примитивных типов).[,]- оператор индексированного доступа (преобразуется в вызовыgetиset).?.выполняет безопасный вызов (вызывает метод или обращается к свойству, если получатель не null).?:берет правое значение, если левое значение равно null (оператор Эльвиса).::создаёт ссылку на член функции или ссылку на класс...,..<создают диапазоны.:отделяет имя от типа в объявлении.?помечает тип как nullable.-
->отделяет параметры и тело лямбда-выражения.
отделяет параметры и тип возвращаемого значения в типе функции.
отделяет условие и тело ветви выражения when.
-
@вводит аннотацию.
вводит или ссылается на метку цикла.
вводит или ссылается на метку лямбды.
ссылается на выражение 'this' из внешнего области видимости.
ссылается на внешний суперкласс.
;отделяет несколько операторов на одной строке.$ссылается на переменную или выражение в шаблоне строки.-
_заменяет неиспользуемый параметр в лямбда-выражении.
заменяет неиспользуемый параметр в разбиваемом объявлении.
Для приоритета операторов, см. этот раздел в грамматике Kotlin.
© 2010–2023 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/keyword-reference.html