format! マクロ
CoddyのRustジャーニー「Fundamentals」セクションの一部 — レッスン 70/75。
Rustにおいて、format!マクロを使用すると、テキストと変数を読みやすくカスタマイズ可能な方法で組み合わせることができます。このマクロはprintln!に似ていますが、出力をコンソールに表示する代わりに、変数に保存したり他の操作で使用したりできるフォーマットされた文字列を返します。
最も単純な構文は、名前のないプレースホルダー {} を使用します:
let name = "Alice";
let age = 30;
let formatted = format!("Name: {}, Age: {}", name, age);
println!("{}", formatted);
// 出力: Name: Alice, Age: 30プレースホルダー内で変数名を直接使用できます:
let name = "Bob";
let age = 25;
let formatted = format!("Name: {name}, Age: {age}");
println!("{}", formatted);
// 出力: Name: Bob, Age: 25引数の位置を数値を使って指定することができます:
let formatted = format!("{1} {0} {2}", "first", "second", "third");
println!("{}", formatted);
// 出力: second first third書式指定子を使用して、値のフォーマット方法を制御できます:
// 数値のフォーマット
let pi = 3.1415926;
let formatted_float = format!("{:.2}", pi);
// "3.14"
// ゼロ埋め
let padded = format!("{:0>5}", "123");
// "00123"チャレンジ
簡単名前と誕生年から、以下のルールに従って秘密のコードを生成するプログラムを作成してください:
- 名前の最初の文字を取得し、大文字にします
- 年の数字を反転させます
- 最初の文字を "⭐" 記号で囲みます
- 囲まれた文字と反転させた年の間に "-" を追加します
文字列を反転させるには、次のコードを使用してください: .to_string().chars().rev().collect::<String>()
チートシート
format!マクロは、テキストと変数を組み合わせ、変数に格納できるフォーマットされた文字列を返します。
名前のないプレースホルダーを使用した基本構文:
let name = "Alice";
let age = 30;
let formatted = format!("Name: {}, Age: {}", name, age);プレースホルダー内で変数名を直接使用する:
let name = "Bob";
let age = 25;
let formatted = format!("Name: {name}, Age: {age}");数値で引数の位置を指定する:
let formatted = format!("{1} {0} {2}", "first", "second", "third");
// 出力: "second first third"出力を制御するための書式指定子:
// 数値のフォーマット
let pi = 3.1415926;
let formatted_float = format!("{:.2}", pi); // "3.14"
// ゼロ埋め
let padded = format!("{:0>5}", "123"); // "00123"文字列を反転させるには: .to_string().chars().rev().collect::<String>()
自分で試してみよう
use std::io;
fn main() {
let mut input_name = String::new();
let mut input_year = String::new();
io::stdin().read_line(&mut input_name).unwrap();
io::stdin().read_line(&mut input_year).unwrap();
let name = input_name.trim();
let year: i32 = input_year.trim().parse().unwrap();
// 以下にコードを書いてください
let secret_code =
println!("{}", secret_code);
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。