第四回:击鼓鸣冤,大声喊出来
在 Rust 的世界里,要向公堂(控制台)输出信息,我们用的不是函数,而是宏 (Macro)。
怎么分辨宏和函数?很简单,带感叹号 ! 的就是宏。就像包大人拍惊堂木一样,掷地有声!
1. println! (惊堂木)
这是最常用的宏,输出并换行。
fn main() {
println!("包龙星:我看你还敢不敢说谎!");
println!("方唐镜:我怎么敢呢?");
}
2. 占位符 {} (填空题)
有时候,你想在话里夹带私货(变量),就得用花括号 {} 来占个座。
fn main() {
let name = "常威";
let action = "打来福";
// 这里的 {} 会被后面的变量依次替换
println!("我看见 {} 在 {}!", name, action);
}
我方唐镜身价百万,能不能把我的银子打印得漂亮点?比如保留两位小数?
要求真多!不过满足你!用 {:?} 或者格式化参数!
3. 高级格式化 (花式审讯)
Rust 的格式化功能非常强大,想怎么打就怎么打:
{:.2}:保留两位小数。{:?}:调试打印(Debug),用于打印那些不想让你随便看的复杂结构体。
fn main() {
let money = 3.1415926;
println!("方唐镜的良心剩下:{:.2}", money); // 输出 3.14
let list = vec![1, 2, 3];
// println!("列表:{}", list); // 报错!普通打印搞不定
println!("列表:{:?}", list); // 使用 Debug 模式:[1, 2, 3]
}
动手时刻:写一份状纸
请修改下面的代码,打印出完整的状纸内容:
"状告人:包龙星,被告:常威,罪名:不会 Rust"
fn main() {
let plaintiff = "包龙星";
let defendant = "常威";
let crime = "不会 Rust";
// 在下面填入你的代码
// println!(...);
}
查看参考答案
println!("状告人:{},被告:{},罪名:{}", plaintiff, defendant, crime);