はじめに
この実験では、可変個の引数を取ることができるインターフェイスである可変個インターフェイスを調べます。例として、前節の calculate! マクロを可変個に変更して、一度に複数の式を評価できるようにします。
注: 実験でファイル名が指定されていない場合は、好きなファイル名を使用できます。たとえば、
main.rsを使用して、rustc main.rs &&./mainでコンパイルして実行できます。
可変個インターフェイス
可変個 インターフェイスは任意の数の引数を取ります。たとえば、println! はフォーマット文字列によって決まる任意の数の引数を取ることができます。
前節の calculate! マクロを可変個に拡張することができます。
macro_rules! calculate {
// 単一の `eval` のパターン
(eval $e:expr) => {
{
let val: usize = $e; // 型を整数に強制する
println!("{} = {}", stringify!{$e}, val);
}
};
// 複数の `eval` を再帰的に分解する
(eval $e:expr, $(eval $es:expr),+) => {{
calculate! { eval $e }
calculate! { $(eval $es),+ }
}};
}
fn main() {
calculate! { // 見てごらん!可変個の `calculate!` です!
eval 1 + 2,
eval 3 + 4,
eval (2 * 3) + 1
}
}
出力:
1 + 2 = 3
3 + 4 = 7
(2 * 3) + 1 = 7
まとめ
おめでとうございます!可変個インターフェイスの実験を完了しました。技術力を向上させるために、LabEx でさらに多くの実験を行って練習してください。