std.io
Модуль ввода-вывода. Предоставляет стандартный вывод, чтение стандартного ввода, а также удобные функции для «одноразового чтения/записи всего файла». Для инкрементального чтения/записи файлов по дескриптору используйте std.os.
use std.ioПлатформенная доступность
Функции начиная с read_line и далее зависят от I/O операционной системы и не экспортируются в целевой платформе wasm32: read_line, read_file, write_file, append_file. print / println / format_fallback доступны на всех платформах.
Список функций
| Функция | Сигнатура |
|---|---|
print | (...args) -> Void |
println | (...args) -> () |
read_line | () -> String |
read_file | (path: &String) -> String |
write_file | (path: &String, content: &String) -> Bool |
append_file | (path: &String, content: &String) -> Bool |
format_fallback | (value, type_name: &String) -> String |
print
print: (...args) -> VoidПоследовательно выводит все аргументы, без перевода строки. Между несколькими аргументами вставляется один пробел.
Аргументы форматируются: String выводит своё содержимое напрямую; List / Dict / Tuple раскрываются рекурсивно; остальные значения выводятся в виде литералов.
use std.io
main: () -> Void = {
print("hello")
print(" ")
print("world")
println("")
}println
println: (...args) -> ()Аналогично print, но в конце вывода добавляется перевод строки.
println() без аргументов выводит пустую строку:
main: () -> Void = {
println("Hello, YaoXiang!")
}read_line
read_line: () -> StringЧитает одну строку из стандартного ввода.
Возврат: вся прочитанная строка, без завершающего символа перевода строки (\n или \r\n). Ошибка: при ошибке чтения выбрасывается E6007.
Интерактивные примеры не могут быть автоматически запущены в документации, приведённый ниже код даётся только для справки.
use std.io
main: () -> Void = {
println("Пожалуйста, введите ваше имя:")
name = io.read_line()
println("Привет, " + name)
}read_file
read_file: (path: &String) -> StringЧитает всё содержимое файла целиком в строку.
path— путь к файлу (только для чтения, заимствование)
Возврат: всё содержимое файла. Ошибка: при отсутствии файла или отсутствии прав доступа выбрасывается E6007. Не возвращает пустую строку.
use std.assert
use std.io
use std.os
use std.string
main: () -> Void = {
p = "__yx_doc_read_file.txt"
io.write_file(p, "hello")
content = io.read_file(p)
assert(content == "hello")
os.remove(p)
}write_file
write_file: (path: &String, content: &String) -> BoolЗаписывает content в path, перезаписывая существующее содержимое; если файл не существует, он создаётся.
path— путь к файлу (только для чтения, заимствование)content— содержимое для записи (только для чтения, заимствование)
Возврат: true при успешной записи. Ошибка: если каталог не существует или нет прав доступа, выбрасывается E6007 (не возвращает false).
use std.assert
use std.io
use std.os
main: () -> Void = {
p = "__yx_doc_write_file.txt"
ok = io.write_file(p, "hello")
assert(ok)
assert(os.exists(p))
os.remove(p)
}append_file
append_file: (path: &String, content: &String) -> BoolДописывает content в конец path; если файл не существует, он создаётся.
Возврат: true при успешной записи. Ошибка: при отсутствии прав доступа выбрасывается E6007.
use std.assert
use std.io
use std.os
main: () -> Void = {
p = "__yx_doc_append_file.txt"
io.write_file(p, "hello")
io.append_file(p, " world")
assert(io.read_file(p) == "hello world")
os.remove(p)
}format_fallback
format_fallback: (value, type_name: &String) -> StringФорматирует значение по имени типа, выводя представление с префиксом вида int(42) / list@3.
Это внутренняя вспомогательная функция, вызываемая по обратному вызову из общего пути форматирования среды выполнения; в повседневном коде следует напрямую использовать std.convert.to_string.
value— произвольное значениеtype_name— строка с именем типа
Возврат: строковое представление с префиксом типа.
use std.assert
use std.io
use std.string
main: () -> Void = {
s = io.format_fallback(42, "int")
assert(string.contains(s, "42"))
}Связанные разделы
std.os— дескрипторы файлов, каталоги и переменные средыstd.convert— преобразование значения в строку
