包龙星

我练了这么久,如果不喊出来,谁知道我有多厉害?我要让全京城的人都听到我的声音!

雷豹

想喊冤?那就得学会击鼓鸣冤!在 Rust 里,这面鼓就是 println!

第四回:击鼓鸣冤,大声喊出来

在 Rust 的世界里,要向公堂(控制台)输出信息,我们用的不是函数,而是宏 (Macro)

怎么分辨宏和函数?很简单,带感叹号 ! 的就是宏。就像包大人拍惊堂木一样,掷地有声!

1. println! (惊堂木)

这是最常用的宏,输出并换行。

fn main() {
    println!("包龙星:我看你还敢不敢说谎!");
    println!("方唐镜:我怎么敢呢?");
}

2. 占位符 {} (填空题)

有时候,你想在话里夹带私货(变量),就得用花括号 {} 来占个座。

fn main() {
    let name = "常威";
    let action = "打来福";
    
    // 这里的 {} 会被后面的变量依次替换
    println!("我看见 {} 在 {}!", name, action);
}
方唐镜

我方唐镜身价百万,能不能把我的银子打印得漂亮点?比如保留两位小数?

雷豹

要求真多!不过满足你!用 {:?} 或者格式化参数!

3. 高级格式化 (花式审讯)

Rust 的格式化功能非常强大,想怎么打就怎么打:

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);
下一回:大清律例(基础语法) →