Разделы сайта находятся в разработке.
Материалы могут быть неполными или содержать ошибки. Содержимое сайта будет синхронизировано с реализацией при выходе следующей версии, тогда как текущая (0.6.0) предназначена для прототипирования синтаксиса и создания песочницы.
Символьные строки
TrustLang поддерживает два типа строк:
:StrChar— универсальные байтовые UTF-8 строки;:StrWide— системные (широкосимвольные) строки.
Байтовые строки :StrChar
Единичный элемент байтовой строки — один байт (точнее :Int8, восьмибитное целое со знаком). Размер
строки возвращается в байтах, а доступ по индексу обращается к байту последовательности. Так как данные
интерпретируются как последовательность UTF-8 символов, при изменении отдельных байт нужно соблюдать
осторожность.
Системные строки :StrWide
Единичный элемент системной строки — широкий символ wchar_t, а размер возвращается в широких символах.
Размер wchar_t зависит от операционной системы: в Windows один символ :StrWide занимает 2 байта,
в Linux — 4. Основное назначение системных строк — упрощение работы в текстовом терминале: один символ
всегда соответствует одному знакоместу без конвертации кодовых точек UTF-8.
Несмотря на разный единичный элемент, внутреннее представление у обоих типов одинаковое: данные строк хранятся в виде байтовой UTF-8 последовательности.
Форматирование строк
К любой переменной можно обратиться как к функции (указав после имени круглые скобки), создав тем самым копию/клон объекта; для строк такой вызов используется как шаблон форматирования данных.
Форматирование возможно двумя способами:
- Строка формата в стиле
printf(тип:FmtChar/:FmtWide) в текущей версии не реализована — типа:FmtChar/:FmtWideнет (см. Статус). Для нативных функций сprintf-строкой используется атрибут@[format("printf", pos, ...)](проверка параметров на этапе компиляции, пример — hello). - Во всех остальных случаях (любая строка по умолчанию) формат соответствует библиотеке
{fmt}/
std::format: порядковый номер аргумента ({0},{1}) или пустые{}. Проверка аргументов выполняется при клонировании строки (во время компиляции и выполнения). Именованные аргументы (name = …) не реализованы.
$template := "{0}: {1}"; # формат как в {fmt}
$result := $template('value', 123);