Ключевые слова и операторы
Ключевые слова
Следующие токены всегда интерпретируются как ключевые слова и не могут использоваться как идентификаторы:
-
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 (цикл с предусловием).
Ключевые слова (Soft)
Следующие токены действуют как ключевые слова в контексте их применимости и могут использоваться как идентификаторы в других контекстах:
-
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разрешает инициализацию необязательного свойства вне конструктора.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–2022 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/keyword-reference.html