Rust コマンドラインへの出力

Rust 言語を正式に学ぶ前に、まずコマンドラインにテキストを出力する方法を学ぶ必要があります。これはほぼすべての言語を学ぶ前に必要なスキルです。なぜなら、コマンドラインへの出力は言語学習段階でプログラムが結果を表現するほぼ唯一の方法だからです。

以前の Hello, World プログラムで文字列出力の方法は大体説明しましたが、完全ではありません。みなさんは、なぜ println!( "Hello World") の println の後ろにはもう一つ!記号があるのか、Rust の関数の後にはすべて感嘆符を付けるのでしょうか?明らかにそうではありません。println は関数ではなく、マクロ規則です。ここでマクロ規則が何かを深く掘り下げる必要はありません。後の章で詳しく紹介しますが、次の学習には影響しません。

Rust で文字を出力する方法は主に2つあります:println!()とprint!()。これら2つの「関数」はどちらもコマンドラインに文字列を出力する方法です。違いは、前者が出力の最後に改行文字を追加で出力するだけです。これら2つの「関数」で情報を出力する場合、最初の引数はフォーマット文字列で、その後に一連の可変引数が続き、フォーマット文字列内の「プレースホルダー」に対応します。この点は C 言語の printf 関数と非常に似ています。ただし、Rust のフォーマット文字列内のプレースホルダーは"% + アルファベット"の形式ではなく、一対の{}。

例:サンプル.rs ファイル

fn main() {
    let a = 12;
    println!("a is {}", a);
}

使用するrustcコマンドで サンプル.rs ファイルをコンパイル:

$ rustc サンプル.rs   # 编译 サンプル.rs 文件

コンパイル後に生成されるサンプル実行可能ファイル:

$ ./サンプル    # 执行 サンプル

上記プログラムの出力結果は:

a is 12 

もし a を2回出力したい場合、次のように書かなければならないのでしょうか:

println!("a is {}, a again is {}", a, a); 

実はもっと良い書き方があります:

println!("a is {0}, a again is {0}", a); 

に{}の間には数字を入れることができ、その後の可変引数を配列としてアクセスします。インデックスは0から始まります。

もし出力したい場合は{ 或 }どうすればいいでしょうか?フォーマット文字列では{{と}}それぞれをエスケープして { と } を表します。ただし、他の一般的なエスケープ文字は C 言語のエスケープ文字と同じで、すべてバックスラッシュで始まる形式です。

fn main() { 
    println!("{{}}"); 
} 

上記プログラムの出力結果は:

{}
その他の拡張