Найдите стандартную функцию для своей задачи, от преобразования текста до чтения файла. Компилятор проверяет имена, члены типов и типы аргументов до выполнения.
Для запуска примеров установите Топаз по инструкции «Первая программа».
Выберите нужную возможность
| Задача | С чего начать | Какой результат обработать |
|---|---|---|
| Вывести текст, разобрать число, проверить Unicode | Базовая библиотека | Значение или Option |
| Преобразовать массив, найти ключ, убрать повторы | Операции с коллекциями | Коллекция, bool или Option |
| Собрать байты, вычислить контрольную сумму, сжать данные | Базовая библиотека | Байты, число или Result |
| Прочитать или записать файл целиком | Файлы и ресурсы | Result от FS |
| Держать файл открытым для нескольких операций | Файлы и ресурсы | Result от open, затем освобождение через using или defer |
| Разобраться в выводе чисел, порядке коллекций и ошибках выполнения | Поведение среды выполнения | Значение или ошибка, останавливающая выполнение |
Повседневный пример
Сохраните код в overview.tpz.
let разобранное: Option<int> = toInt("42")
let значения: Array<int> = Array.of(1, 2, 3)
let удвоенные = map(значения, значение => значение * 2)
print("{разобранное}:{удвоенные}")В каталоге с файлом выполните topaz run overview.tpz.
Some(42):[2, 4, 6]toInt("42") возвращает Some(42). Если заменить вход на "x", получится None. Оба результата имеют тип Option, поэтому вызывающий код может обработать неудачное преобразование. map удваивает каждый элемент массива, сохраняя порядок.
Используйте Result, когда операция возвращает причину ошибки, например при чтении файла. Ошибка выполнения, или fault, останавливает программу. Неверные имена и типы аргументов отклоняются при проверке. Способы обработки описаны в разделе Null, Option, Result и ошибки.
Найдите имена и импорты
Функции вроде print и toInt доступны без импорта. Это относится и к конструкторам Some и None для Option, а также Ok и Err для Result.
Пространство имён объединяет связанные функции под общим именем. Например, Math.sqrt вызывает sqrt из Math. Следующие встроенные пространства имён доступны без импорта.
| Задача | Пространство имён |
|---|---|
| Хранить упорядоченные элементы | Array |
| Искать значения по ключу | Map |
| Хранить уникальные элементы | Set |
| Читать и записывать форматы данных | JSON, CSV, TOML, URL |
| Хранить и собирать байты | Bytes, ByteBuffer |
| Кодировать и сжимать данные | Encoding, Codec |
| Вычислять хеши и контрольные суммы | Hash |
| Искать текст по шаблону | Regex |
| Выполнять вычисления с числами | Math, BigInt, Decimal |
| Работать с календарными датами | Date |
| Обращаться к файлам и строить пути | FS, Path |
| Разбирать аргументы командной строки | Cli |
| Проверять утверждения в тестовом профиле | Test |
Код пакета может импортировать модули std.* из инструментария, в том числе функции для генераторов и парсеров. Импортированный модуль с совпадающим именем скрывает встроенное пространство имён в этом файле. Компилятор self и эталонный компилятор на Rust применяют одинаковые правила поиска имён.
Точные границы
Профиль задаёт доступные программе операции. Работа с файлами и другие операции среды также требуют поддержки со стороны окружения, запускающего Топаз. Импорт не даёт разрешений на файловую систему, сеть, процессы, переменные окружения, часы или базы данных.
- Позиции в строке считают скаляры Unicode. Скаляр соответствует одной кодовой точке Unicode вне диапазона суррогатов. Байтовые API явно указывают подсчёт байтов.
- Обход коллекций и снимки сохраняют установленный порядок.
- Разбор и декодирование возвращают объявленный
OptionилиResult. - Некорректная арифметика и обращение по недопустимому индексу могут остановить программу с ошибкой выполнения.
Test.*, свободная функцияassertиstd.testтребуют тестового профиля.- Неизвестные имена, модули и члены отклоняются при проверке. Проверьте написание и API нужного типа.
Куда перейти дальше
- Базовая библиотека для чисел, текста и байтов.
- Операции с коллекциями для поиска и изменения данных.
- Файлы и ресурсы для чтения, записи и закрытия файлов.
- Поведение среды выполнения для вывода и ошибок выполнения.