macro_rules! retry_put {
($mod_name:ident, $data_type:ty) => {{
fn $mod_name() {
// somelike
if $mod_name == "red" {
// generate code written here and not the one in else block
return u8;
}
else {
// generate code written here and not the one in if
return "string";
}
}
}
}
我试图基本上根据输入更改返回类型,如果输入为 true,则返回字符串,否则返回 int。
或者也许举个例子,说明我们在宏中接受一个参数,如果它是偶数,则计算 5 的阶乘并将其作为整数返回,如果参数是奇数,则计算 5 的阶乘并将其作为字符串返回。并且两个函数的名称应该相同。以及计算5的逻辑!不应该重复。
您可以像这样重载宏:
macro_rules! retry_put {
(red, $data_type:ty) => {{
fn red() {
return u8;
}
}
}
($mod_name:ident, $data_type:ty) => {{
fn $mod_name() {
return "string";
}
}
}
}
参见宏规则!。