Konsoleneingabe, -ausgabe und -formatierung

print, println, input Beschreibt Sätze und Platzhalterregeln.

Wave Foundation

Eingabe-/Ausgabeanweisung

Wave stellt print, println und input als Eingabe-/Ausgabeanweisungen für die Konsole bereit.

fun main() {
    var count: i32 = 0;
    input("{}", count);
    print("count = ");
    println("{}", count);
}

Jeder Satz endet mit ;. Das erste Argument muss ein String-Literal sein. Variablen oder berechnete Zeichenfolgen können nicht als format-Argumente verwendet werden.

Platzhalter

Nur genau zwei Zeichen, {}, sind Platzhalter.

println("name = {}, score = {}", name, score);

Die Anzahl der Platzhalter und die Anzahl der darauffolgenden Ausdrücke müssen genau gleich sein. Wenn die Zahlen unterschiedlich sind, handelt es sich um einen Grammatikfehler.

println("{} {}", one);
// 오류: 자리표시자 2개, 값 1개
println("plain text", one);
// 오류: 자리표시자 없음, 값이 남음

Andere Formen von geschweiften Klammern bleiben als einfacher Text übrig. In dieser Grammatik gibt es keine benannten oder nummerierten Platzhalter.

print druckt den formatierten Text unverändert und println fügt einen Zeilenumbruch hinzu.

print("loading...");
println("done");

Formatierungsargumente verwenden Skalarwerte wie Ganzzahlen, Gleitkommazahlen, Zeichenfolgen und Zeiger. Arrays und Strukturen können nicht als Formatierungsargumente verwendet werden.

input Ziel

input speichert den gelesenen Wert im Ziel, daher müssen alle Ausdrücke nach format beschreibbare Speicherorte sein.

var number: i32 = 0;
input("{}", number);

Als Ziele können Variablen, Felder und dereferenzierte Speicherorte verwendet werden. Literale und Berechnungsergebnisse können nicht als Eingabe verwendet werden.

Wenn nicht alle Eingabewerte in den angeforderten Typ konvertiert werden können, wird das Programm mit einem Fehlerstatus beendet.

Laufzeitgrenze

Diese Anweisungen verwenden Konsoleneingaben und -ausgaben aus der hosted-Umgebung. In einer freistehenden Umgebung muss die vom Kernel oder Gerät bereitgestellte Eingabe/Ausgabe als Funktion oder FFI-Grenze definiert werden.

Eingabewert und -bereich

Die Eingabe bool akzeptiert nur 0 und 1. Es interpretiert 2 nicht als true und akzeptiert die Zeichenfolge true nicht als dieselbe Eingabe. Die Ganzzahleingabe muss innerhalb des Bereichs der Ziel-Ganzzahlbreite liegen. Basierend auf der Gesamtbreite des Typs werden auch 128-, 256-, 512- und 1024-Bit-Ganzzahlen verarbeitet.

Formatfehler, außerhalb des Bereichs, bevor die erforderliche Eingabe EOF fehlschlägt. Das integrierte input ist keine Funktion, die einen Fehler zurückgibt und erneut eintritt, sondern eine Eingabefunktion, die den Prozess bei einem Fehler beendet. Wenn Sie eine wiederherstellbare Eingabeverarbeitung benötigen, lesen Sie die Bytes mit io und erstellen Sie einen separaten Parser.

Praxis des Eingaberechners · Datei und io