Palabras clave duras

Los siguientes tokens siempre se interpretan como palabras clave y no se pueden utilizar como identificadores:

  • as

    • se utiliza para tipos de yesos
    • especifica un alias para una importación
  • as? se utiliza para yesos de tipo seguro
  • break termina la ejecución de un bucle
  • class declara una clase
  • continue pasa al siguiente paso del bucle envolvente más cercano
  • do comienza un bucle do / while (bucle con poscondición)
  • else define la rama de una expresión if que se ejecuta cuando la condición es falsa
  • false especifica el valor ‘falso’ del tipo booleano
  • for comienza un bucle for
  • fun declara una función
  • if comienza una expresión if
  • in

    • especifica el objeto que se itera en un bucle for
    • se usa como un operador infijo para verificar que un valor pertenece a un rango, una colección u otra entidad que define el método ‘contiene’
    • se usa en cuando expresiones con el mismo propósito
    • marca un parámetro de tipo como contravariante
  • !in

    • se utiliza como operador para comprobar que un valor NO pertenece a un rango, una colección u otra entidad que define el método ‘contiene’
    • se usa en cuando expresiones con el mismo propósito
  • interface declara una interfaz
  • is

    • comprueba que un valor tiene un tipo determinado
    • se usa en cuando expresiones con el mismo propósito
  • !is

    • comprueba que un valor NO tiene un tipo determinado
    • se usa en cuando expresiones con el mismo propósito
  • null es una constante que representa una referencia de objeto que no apunta a ningún objeto
  • object declara una clase y su instancia al mismo tiempo
  • package especifica el paquete para el archivo actual
  • return regresa de la función adjunta más cercana o función anónima
  • super

    • se refiere a la implementación de superclase de un método o propiedad
    • llama al constructor de superclase desde un constructor secundario
  • this

  • throw lanza una excepción
  • true especifica el valor ‘verdadero’ del tipo booleano
  • try comienza un bloque de manejo de excepciones
  • typealias declara un alias de tipo
  • typeof reservado para uso futuro
  • val declara una propiedad de solo lectura o una variable local
  • var declara una propiedad mutable o variable local
  • when comienza una expresión when (ejecuta una de las ramas dadas)
  • while comienza un ciclo while (ciclo con condición previa)

Palabras clave blandas

Los siguientes tokens actúan como palabras clave en el contexto cuando son aplicables y se pueden usar como identificadores en otros contextos:

  • by

    • delega la implementación de una interfaz a otro objeto
    • delega la implementación de descriptores de acceso para una propiedad a otro objeto
  • catch comienza un bloque que maneja un tipo de excepción específico
  • constructor declara un constructor primario o secundario
  • delegate se utiliza como destino del sitio de uso de anotaciones
  • dynamic hace referencia a un tipo dinámico en el código Kotlin / JS
  • field se utiliza como destino de sitio de uso de anotaciones
  • file se utiliza como destino del sitio de uso de anotaciones
  • finally comienza un bloque que siempre se ejecuta cuando sale un bloque try
  • get

    • declara el captador de una propiedad
    • se utiliza como destino de sitio de uso de anotaciones
  • import importa una declaración de otro paquete al archivo actual
  • init comienza un bloque inicializador
  • param se utiliza como destino de sitio de uso de anotaciones
  • property se utiliza como destino del sitio de uso de anotaciones
  • receiverse utiliza como destino del sitio de uso de anotaciones
  • set

    • declara el colocador de una propiedad
    • se utiliza como destino de sitio de uso de anotaciones
  • setparam se utiliza como destino del sitio de uso de anotaciones
  • where especifica restricciones para un parámetro de tipo genérico

Palabras clave de modificadores

Los siguientes tokens actúan como palabras clave en listas de modificadores de declaraciones y se pueden usar como identificadores en otros contextos:

  • actual denota una implementación específica de la plataforma en proyectos multiplataforma
  • abstract marca una clase o miembro como abstracto
  • annotation declara una clase de anotación
  • companion declara un objeto complementario
  • const marca una propiedad como una constante en tiempo de compilación
  • crossinline prohíbe los retornos no locales en una lambda pasada a una función en línea
  • data indica al compilador que genere miembros canónicos para una clase
  • enum declara una enumeración
  • expect marca una declaración como específica de la plataforma, esperando una implementación en los módulos de la plataforma.
  • external marca una declaración como implementada no en Kotlin (accesible a través de JNI o ​​en JavaScript)
  • final prohíbe anular un miembro
  • infix permite llamar a una función en notación infija
  • inline le dice al compilador que inserte la función y las lambdas que se le pasan en el sitio de la llamada
  • inner permite hacer referencia a la instancia de clase externa desde una clase anidada
  • internal marca una declaración como visible en el módulo actual
  • lateinit permite inicializar una propiedad no nula fuera de un constructor
  • noinline desactiva la inserción de una lambda pasada a una función en línea
  • open permite subclasificar una clase o anular un miembro
  • operator marca una función como sobrecargar a un operador o implementar una convención
  • out marca un parámetro de tipo como covariante
  • override marca un miembro como anulación de un miembro de superclase
  • private marca una declaración como visible en la clase o archivo actual
  • protected marca una declaración como visible en la clase actual y sus subclases
  • public marca una declaración como visible en cualquier lugar
  • reified marca un parámetro de tipo de una función en línea como accesible en tiempo de ejecución
  • sealed declara una clase sellada (una clase con subclases restringidas)
  • suspend marca una función o lambda como suspendida (utilizable como una corrutina)
  • tailrec marca una función como recursiva de cola (permitiendo que el compilador reemplace la recursividad con la iteración)
  • vararg permite pasar un número variable de argumentos para un parámetro

Identificadores especiales

El compilador define los siguientes identificadores en contextos específicos y se pueden utilizar como identificadores regulares en otros contextos:

  • field se usa dentro de un descriptor de acceso de propiedad para referirse al campo de respaldo de la propiedad
  • it se usa dentro de una lambda para referirse a su parámetro implícitamente

Operadores y símbolos especiales

Kotlin admite los siguientes operadores y símbolos especiales:

  • +, -, *, /, % – operadores matemáticos

    • * también se usa para pasar una matriz a un parámetro vararg
  • =

    • operador de asignación
    • se utiliza para especificar valores predeterminados para los parámetros
  • +=, -=, *=, /=, %= – operadores de asignación aumentada
  • ++, -- – operadores de incremento y decremento
  • &&, ||, ! – operadores lógicos ‘y’, ‘o’, ‘no’ (para operaciones bit a bit, use las funciones infijas correspondientes)
  • ==, != – operadores de igualdad (traducidos a llamadas de equals() para tipos no primitivos)
  • ===, !== – operadores de igualdad referencial
  • <, >, <=, >= – operadores de comparación (traducidos a llamadas de compareTo() para tipos no primitivos)
  • [, ] – operador de acceso indexado (traducido a llamadas de get y set)
  • !! afirma que una expresión no es nula
  • ?. realiza una llamada segura (llama a un método o accede a una propiedad si el receptor no es nulo)
  • ?: toma el valor de la derecha si el valor de la izquierda es nulo (el operador de Elvis)
  • :: crea una referencia de miembro o una referencia de clase
  • .. crea un rango
  • : separa un nombre de un tipo en declaraciones
  • ? marca un tipo como anulable
  • ->

    • separa los parámetros y el cuerpo de una expresión lambda
    • separa los parámetros y la declaración del tipo de retorno en un tipo de función
    • separa la condición y el cuerpo de un cuando expresión rama
  • @

    • introduce una anotación
    • introduce o hace referencia a una etiqueta de bucle
    • introduce o hace referencia a una etiqueta lambda
    • hace referencia a una expresión ‘esto’ desde un ámbito externo
    • hace referencia a una superclase externa
  • ; separa varias declaraciones en la misma línea
  • $ hace referencia a una variable o expresión en una plantilla de cadena
  • _