std.convert
Модуль преобразования типов, в настоящее время предоставляет преобразование значений в String.
use std.convertПравила преобразования
to_string форматирует в соответствии с формой значения во время выполнения:
| Тип | Формат вывода | Пример |
|---|---|---|
Void | void | void |
Bool | true / false | true |
Int | десятичная | 42 |
Float | см. ниже | 3.14 / 2.0 |
Char | сам символ | a |
String | исходное содержимое (без кавычек) | hello |
List | [элемент, ...] | [1, 2, 3] |
Dict | {k: v, ...} | {a: 1} |
Tuple | (элемент, ...) | (1, hello) |
Array | [элемент, ...] | [1, 2] |
Range | начало..конец | 1..5 (когда step равен 1, опускается) |
Bytes | bytes[длина] | bytes[3] |
Для целочисленных значений Float добавляется один десятичный знак (2.0 вместо 2), чтобы отличать Int от Float.
Обзор функций
| Функция | Сигнатура |
|---|---|
to_string | (value) -> String |
int.to_string | (self) -> String |
float.to_string | (self) -> String |
bool.to_string | (self) -> String |
char.to_string | (self) -> String |
string.to_string | (self) -> String |
list.to_string | (self) -> String |
dict.to_string | (self) -> String |
tuple.to_string | (self) -> String |
set.to_string | (self) -> String |
range.to_string | (self) -> String |
Функции
to_string
to_string: (value) -> StringПреобразует произвольное значение в его строковое представление.
value— значение произвольного типа
Возвращает: отформатированную строку. При отсутствии аргумента возвращает "()".
use std.assert
use std.convert
main: () -> Void = {
assert(convert.to_string(42) == "42")
assert(convert.to_string(true) == "true")
assert(convert.to_string(false) == "false")
}Сама строка не заключается в кавычки:
use std.assert
use std.convert
main: () -> Void = {
assert(convert.to_string("hi") == "hi")
}Составные типы раскрываются рекурсивно (формат не фиксируется, во избежание хрупкости):
use std.assert
use std.convert
use std.string
main: () -> Void = {
s_list = convert.to_string([1, 2, 3])
assert(string.len(s_list) > 0)
s_dict = convert.to_string({})
assert(string.len(s_dict) > 0)
}Форма методов типа
Помимо общего convert.to_string, модуль также экспортирует следующие одноимённые функции, привязанные к типу, поведение которых полностью совпадает:
| Имя экспорта | Сигнатура |
|---|---|
int.to_string | (self) -> String |
float.to_string | (self) -> String |
bool.to_string | (self) -> String |
char.to_string | (self) -> String |
string.to_string | (self) -> String |
list.to_string | (self) -> String |
dict.to_string | (self) -> String |
tuple.to_string | (self) -> String |
set.to_string | (self) -> String |
range.to_string | (self) -> String |
Эти привязки используются для диспетчеризации Stringable во время выполнения; в повседневном коде достаточно использовать convert.to_string.
Тип
Setуже удалён на уровне языка,set.to_stringсохранён как заполнитель для совместимости.
Связанное
std.io— внутреннее форматированиеprint/printlnиспользует тот же набор правилstd.string— операции со строками
