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 und println
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.