面试题答案
一键面试// 定义一个带参数的函数宏
macro_rules! print_square {
// 匹配规则,接受一个整数参数 $n
($n:expr) => {
// 计算并打印参数 $n 的平方值
println!("The square of {} is {}", $n, $n * $n);
};
}
宏定义各部分含义:
macro_rules! print_square
:定义一个名为print_square
的宏。macro_rules!
是Rust中定义宏的关键字。($n:expr)
:这是宏的匹配模式。$n
是定义的参数名,$
表示这是一个宏变量。:expr
表示这个参数是一个表达式类型,在这个例子中可以接受一个整数表达式。=>
:分隔匹配模式和替换代码块。println!("The square of {} is {}", $n, $n * $n);
:这是替换代码块,当宏被调用且参数匹配($n:expr)
模式时,这段代码会被插入到调用宏的位置。它会打印出传入参数$n
及其平方值。
使用示例:
fn main() {
print_square!(5);
}
在 main
函数中调用 print_square!(5)
,宏会被展开为 println!("The square of 5 is {}", 5 * 5);
,最终输出 The square of 5 is 25
。