Обратитесь к этому разделу, если topaz check отклоняет синтаксис, знакомый по JavaScript, Python, Rust или ранним версиям Топаза. Топаз принимает перечисленные ниже канонические формы. Для большинства привычных записей существует актуальная замена, а остальные группы возможностей перечислены как отложенные.
Проверьте программу в текущей записи
Сохраните код в forbidden-deferred.tpz:
let mut количество = 0
let значения: Array<int> = [1, 2]
let преобразовать: (int) -> int = значение => значение + 1
match значения {
case [голова, ..хвост] => {
количество = преобразовать(голова) + хвост.length
}
case [] => {
количество = 0
}
}
print("{количество}")Проверьте и запустите файл:
topaz check forbidden-deferred.tpz
topaz run forbidden-deferred.tpzРезультат:
3Здесь показаны актуальный порядок let mut, именованный тип коллекции, тип вызываемого значения, лямбда-выражение и шаблон остатка списка.
Замените запись, сохранив смысл
| Если вы написали | Используйте |
|---|---|
mut let count = 0 | let mut count = 0 |
count++ или count-- | count = count + 1 или count = count - 1 |
[T] в позиции типа | Array<T> |
function(T) -> U в позиции типа | (T) -> U |
args: ...T | ...args: T |
[head, ...tail] | [head, ..tail] |
Анонимную function (...) { ... } | Лямбду, например value => value + 1 |
Обратные кавычки или ${value} | Двойные кавычки и интерполяцию {value} |
Индекс или .length у строки | text.scalars(), затем операции Array |
async или await | Явный concurrent с заданным тайм-аутом, если подходит его модель |
Для модулей действуют отдельные фиксированные формы. Используйте выборочный import и export перед объявлением из раздела Модули и видимость. Формы use, строковые и шаблонные пути, списки export, wildcard-export, повторный export и переименование при export недоступны.
Некорректные записи выше приведены в виде текста, а не действительных примеров Топаза. Запускайте topaz check до этапа генерации. Общая проверка отклонит их на границе языка, поэтому целевой код не будет домысливать их смысл.
Отложенные формы и текущие альтернативы
Для некоторых отклонённых форм существуют текущие замены. Другие возможности остаются отложенными, поскольку их семантика выходит за рамки текущей спецификации языка. В текущем коде используйте документированные альтернативы; перечисленные группы возможностей ожидают будущих решений по языку.
В настоящее время недоступны, среди прочего, кластеры графем и прямые срезы строк, HTML- и пользовательские теги шаблонов, более широкие и высокоранговые ограничения обобщений, рекурсивные псевдонимы типов, широкий вызов протоколов, повторный экспорт пакетов, общее разворачивание итерируемых значений, асинхронная очистка, async/await, перехват ошибок выполнения, panic/throw/catch и сокращение опционального поля в конвейере.
Токены владения и получателя Rust &self, &mut self, Vec<T> и use crate:: используются в явно обозначенных спецификациях интероперабельности. Стандартный Топаз использует impl Name на уровне модуля, встроенные типы коллекций, канонический импорт и собственные формы обновления записей.
Актуальные формы собраны в Кратком обзоре синтаксиса. Сведения по операторам смотрите в разделе Операторы и выражения, а структуру программы — в Модули и видимость.