Консольный ввод, вывод и форматирование
print, println, input Описывает предложения и правила заполнителей.
Wave Foundation
оператор ввода/вывода
Wave предоставляет print, println и input в качестве операторов консольного ввода/вывода.
fun main() {
var count: i32 = 0;
input("{}", count);
print("count = ");
println("{}", count);
}
Каждое предложение заканчивается на ;. Первый аргумент должен быть строковым литералом. Переменные или вычисляемые строки нельзя использовать в качестве аргументов format.
заполнитель
Только два символа, {}, являются заполнителями.
println("name = {}, score = {}", name, score);
Количество заполнителей и количество последующих выражений должно быть одинаковым. Если цифры разные, это грамматическая ошибка.
println("{} {}", one);
// 오류: 자리표시자 2개, 값 1개
println("plain text", one);
// 오류: 자리표시자 없음, 값이 남음
Другие формы фигурных скобок остаются в виде обычного текста. В этой грамматике нет именованных или пронумерованных заполнителей.
print и println
print печатает форматированный текст как есть, а println добавляет разрыв строки.
print("loading...");
println("done");
Аргументы форматирования используют скалярные значения, такие как целые числа, числа с плавающей запятой, строки и указатели. Массивы и структуры нельзя использовать в качестве аргументов форматирования.
input Цель
input сохраняет прочитанное значение в месте назначения, поэтому все выражения после format должны быть доступными для записи.
var number: i32 = 0;
input("{}", number);
В качестве целей можно использовать переменные, поля и разыменованные места хранения. Литералы и результаты вычислений не могут использоваться в качестве входных данных.
Если все входные значения не могут быть преобразованы к запрошенному типу, программа завершает работу со статусом сбоя.
граница времени выполнения
Эти операторы используют консольный ввод и вывод из среды hosted. В автономной среде ввод/вывод, предоставляемый ядром или устройством, должен быть определен как функция или граница FFI.
Входное значение и диапазон
Ввод bool принимает только 0 и 1. Он не интерпретирует 2 как true и не принимает строку true как тот же вход. Целочисленный ввод должен находиться в пределах целевой ширины целого числа. Целые числа длиной 128, 256, 512 и 1024 бита также обрабатываются в зависимости от общей ширины типа.
Ошибка формата, выход за пределы допустимого диапазона, прежде чем требуемый ввод EOF не удался. Встроенная input — это не функция, которая возвращает ошибку и повторяет вход, а функция ввода, которая завершает процесс в случае ошибки. Если вам нужна восстанавливаемая обработка ввода, прочитайте байты с помощью io и создайте отдельный синтаксический анализатор.