Консольный ввод, вывод и форматирование

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("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 и создайте отдельный синтаксический анализатор.

Практика расчета входных данных · Файл и io