宏
// 这是一个简单的宏,名为 `say_hello`。
macro_rules! say_hello {
// `()` 表示此宏不接受任何参数。
() => (
// 此宏将会展开成这个代码块里面的内容。
println!("Hello!");
)
}
macro_rules! say_hello2 {
// `()` 表示此宏不接受任何参数。
($args:tt) => (
// 此宏将会展开成这个代码块里面的内容。
println!("Hello! {}", $args);
)
}
fn main() {
// 这个调用将会展开成 `println("Hello");`!
say_hello!()
say_hello2!("fd")
say_hello2!(1)
say_hello2!(true)
// err : say_hello2!(1,2,3,4) 参数还是要跟定义一样
}
这里跟普能函数区别就是。他传的参数是可以是你在编辑器上的填的字符。在say_hello2中就相当于编译后。会将"fd"替换掉定义里的$args,是字符替换。不是传参数。这样就很好区分他和函数的区别。