入出力
read で整数を読む
Section titled “read で整数を読む”read 名前, 名前; で空白区切りの整数を読み込みます。空白には改行も含まれます。対象は左から右へ順番に処理します。
read a, b;print a + b;入力が 12 30 なら出力は 42 です。
新しい変数に型を指定しなければ i32 になります。名前: i64 と書くと64ビット整数を読めます。すでに存在する変数は、その型のまま更新します。
read n: i32;total: i64 = 0;for i in 0..n { read value: i64; total += value;}print total;既存変数に型注釈を付け直す場合は、元の型と一致する必要があります。read は i32 と i64 にだけ対応します。
入力トークンの規則
Section titled “入力トークンの規則”入力は、任意の + または - と、その後の1桁以上の10進数字です。42、-7、+12、0003 は受け付けます。
トークン全体が有効な整数である必要があります。12abc の先頭だけを数値として読むことはありません。ソースコードの整数リテラルとは異なり、入力の 1_000 は認めません。0xff、+ だけのトークン、+-1 もエラーです。
入力不足、形式の誤り、型の範囲外の値は実行時エラーです。複数の値を読む途中で失敗した場合、それ以前に成功した入力を取り消す仕組みはありません。
print で出力する
Section titled “print で出力する”print 式, 式; は値の間に半角スペースを入れ、最後に改行を出力します。引数は i32、i64、bool に対応します。bool は true または false になります。
print 12, -3, true; // 12 -3 trueprint; // 空行print は関数呼び出しではなく文なので、print(1, 2) ではなく print 1, 2; と書きます。
引数の評価と出力の順序
Section titled “引数の評価と出力の順序”引数は左から右へ、すべて評価してから、その print の出力を始めます。引数の評価中に別の print が実行される場合、その出力が先に現れます。
fn announce(value: i32) -> i32 { print value; value + 1}
print announce(10), announce(20);出力:
102011 21