Стандартная библиотека и среда

Обзор стандартной библиотеки

Найдите стандартные функции для текста, чисел, коллекций, байтов и файлов и выберите способ обработки отсутствующих значений и ошибок.

Найдите стандартную функцию для своей задачи, от преобразования текста до чтения файла. Компилятор проверяет имена, члены типов и типы аргументов до выполнения.

Для запуска примеров установите Топаз по инструкции «Первая программа».

Выберите нужную возможность

ЗадачаС чего начатьКакой результат обработать
Вывести текст, разобрать число, проверить UnicodeБазовая библиотекаЗначение или Option
Преобразовать массив, найти ключ, убрать повторыОперации с коллекциямиКоллекция, bool или Option
Собрать байты, вычислить контрольную сумму, сжать данныеБазовая библиотекаБайты, число или Result
Прочитать или записать файл целикомФайлы и ресурсыResult от FS
Держать файл открытым для нескольких операцийФайлы и ресурсыResult от open, затем освобождение через using или defer
Разобраться в выводе чисел, порядке коллекций и ошибках выполненияПоведение среды выполненияЗначение или ошибка, останавливающая выполнение

Повседневный пример

Сохраните код в overview.tpz.

TOPAZ
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 нужного типа.

Куда перейти дальше