我正在尝试完成 Rustlings 练习中的测验 #4:
// 编写一个通过测验的宏!这次没有提示,你可以做到!
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_my_macro_world() {
assert_eq!(my_macro!("world!"), "Hello world!");
}
#[test]
fn test_my_macro_goodbye() {
assert_eq!(my_macro!("goodbye!"), "Hello goodbye!");
}
}
Run Code Online (Sandbox Code Playgroud)
我的宏看起来像这样:
#[macro_export]
macro_rules! my_macro {
(($val:expr), "world!") => {
println!("Hello world!");
};
(($val:expr), "goodbye!") => {
println!("Hello goodbye!");
};
}
Run Code Online (Sandbox Code Playgroud)
这是在 Rust 语言文档的声明性宏部分之后设计的。我收到以下错误:
assert_eq!(my_macro!("world!"), "Hello world!");
| ^^^^^^^^^^ no rules expected this token in macro call
assert_eq!(my_macro!("goodbye!"), "Hello goodbye!");
| ^^^^^^^^^^ no rules expected this token in macro call
Run Code Online (Sandbox Code Playgroud)
我找不到解决此问题的解决方案以使其编译。帮助!
小智 5
我认为,这次演习的想法是找到一种方法,通过使用宏,我们得到字符串“Hello什么”。我也是 Rust 的新手,但我已经能够以这种方式进行练习:
#[macro_use]
macro_rules! my_macro {
($val:expr) => {
format!("Hello {}",$val);
}
}
Run Code Online (Sandbox Code Playgroud)
我在等反馈!
| 归档时间: |
|
| 查看次数: |
699 次 |
| 最近记录: |