Ключевые слова
В Aura шестнадцать зарезервированных слов. Ни одним из них нельзя назвать
привязку, функцию, схему или ключ без кавычек: type = 1 - синтаксическая
ошибка. Ключ, который должен быть одним из этих слов, пишется строкой и так же
читается (D11): "type": "service", затем o."type".
| Слово | Что делает | Пример | Решение |
|---|---|---|---|
import | Подключает другой модуль, пакет из реестра с закреплённой версией или модуль, который даёт хост | import "./lib.aura" as lib | D8, D12, D35 |
as | Даёт имя тому, что подключил import; только после импорта | import org/net@v1.2 as net | D12 |
type | Объявляет схему: поля с типами, умолчаниями и инвариантами. Поле с типом-схемой хранит только то, что принял бы её new | type Port … end | D15, D26, D27, D28, D41 |
enum | Объявляет закрытый набор строк для поля схемы | enum Tier … end | D18 |
def | Объявляет именованную функцию. Возвращает объект из своих свойств или последнее выражение, если тело им кончается | def labels(team) … end | D17, D40 |
end | Закрывает любой блок: объекты, def, type, enum, domain, cond, new, многострочную лямбду и строку text | tls: enabled: true end | D3, D38 |
domain | Именованный раздел со своей областью видимости: метка становится ключом, а в теле можно вычислять | domain "production" … end | D17 |
new | Создаёт экземпляр схемы и проверяет его | new Port number: 443 end | D4, D38 |
assert | Проверка, которая останавливает вычисление с сообщением; внутри type - инвариант, который переезжает вместе со схемой | assert replicas > 0, "need one" | D5, D28 |
shadow | Заново привязывает имя из внешней области - без него это E0302 | shadow port = 9090 | D7 |
pub | Делает def, type или enum доступным для импорта; свойства видны всегда | pub def service(name) | D12 |
cond | Выбор из нескольких значений, побеждает первая истинная ветка | cond … else -> "dev" … end | D14 |
else | Последняя ветка cond, обязательна, чтобы у каждого пути было значение | else -> "dev" | D14 |
true | Логическая истина. «Истинности» нет: условие, которое не Bool, - это E0306 | tls: true | - |
false | Логическая ложь | debug: false | - |
null | Отсутствие значения. Поле схемы принимает его, только если тип помечен ?, и оно никогда не выводится текстом | quota: Int? = null | D27, D31 |
Не зарезервировано
| Слово | Что делает | Пример | Решение |
|---|---|---|---|
text | Открывает блочную строку, но только там, где ожидается значение, - key: text или x = text в конце строки. В остальных местах это обычное имя, так что поле с именем text продолжает работать | body: text … end | D16 |
Имена типов - String, Int, Float, Bool, List, Object - тоже не
ключевые слова: это имена, которые знает проверка схем. Решения из последнего
столбца - в журнале решений спецификации.