Сроки являются шаблоном и мета объектом, который содержит последовательности символов.
let const stringName : str = "hello";
Строки в общем представлении могут: * Общая итерация и получение одного символа * Сложение строк * Поиск и взятие подстроки * Получение длинны строки * Замена части строки * Очистка строки * Удаление части строки * Вставка * Разбить строки на подстроки в массиве * Объединение массива строк в одну * Число в строку и строка из числа * Возможное приведение других типов к строке и форматирование вывода
Конкретные типы будут подставлены автоматически.
Есть некоторые специальные метафункции для получения представления.
Например:
* type(str)::char вернёт тип символа строки
* type(str) вернёт тип строки
let mut commonString : str = "Hello";
let const t : type(commonString)::char = commonString[2];
print(t); // l
let mut commonString : str = "Hello";
let const t : type::auto = commonString[2];
print(t); // l
Более подробно про оператор type() см в 2 6 Операторы над типами
// C-style строка
// Такая строка в c/c++ является const char*
let s1 : str::cstr = "Hello";
// Строки обёрнутые в '' это символы
// символы могут приводиться к строкам и наоборот
let s2 : str::cstr = ['H','e','l','l','o','\0'];
//
Класс мета строк может оптимизировать формирование строк.
let mut aStr : str::meta #= "Hello ";
aStr #+= "world ";
aStr #+= str(10);
print(aStr);
Данный код скомпилируется в следующий:
print(format("{}{}{}","Hello ", "world ", str(10)));
// Hello world 10
Как мы видим с точки зрения вычислений данный код тратит меньше ресурсов при том сохраняя свободной логику формирования строки.
Изменения объекта будут накапливаться до определённого момента, когда придёт время вычислить их в автоматическом или ручном виде.