Структура программы

Запрещённые и отложенные формы

Замените привычную, но неподдерживаемую запись канонической формой текущего Топаза.

Обратитесь к этому разделу, если topaz check отклоняет синтаксис, знакомый по JavaScript, Python, Rust или ранним версиям Топаза. Топаз принимает перечисленные ниже канонические формы. Для большинства привычных записей существует актуальная замена, а остальные группы возможностей перечислены как отложенные.

Проверьте программу в текущей записи

Сохраните код в forbidden-deferred.tpz:

TOPAZ
let mut количество = 0
let значения: Array<int> = [1, 2]
let преобразовать: (int) -> int = значение => значение + 1

match значения {
    case [голова, ..хвост] => {
        количество = преобразовать(голова) + хвост.length
    }
    case [] => {
        количество = 0
    }
}

print("{количество}")

Проверьте и запустите файл:

BASH
topaz check forbidden-deferred.tpz
topaz run forbidden-deferred.tpz

Результат:

Вывод
3

Здесь показаны актуальный порядок let mut, именованный тип коллекции, тип вызываемого значения, лямбда-выражение и шаблон остатка списка.

Замените запись, сохранив смысл

Если вы написалиИспользуйте
mut let count = 0let 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 на уровне модуля, встроенные типы коллекций, канонический импорт и собственные формы обновления записей.

Актуальные формы собраны в Кратком обзоре синтаксиса. Сведения по операторам смотрите в разделе Операторы и выражения, а структуру программы — в Модули и видимость.