在 Cairo 中,打印让你可以在程序运行期间显示消息或调试信息。
Cairo 提供了两个用于打印的宏:
println!:输出一条消息,并在末尾换行。print!:输出一条消息,末尾不换行。println!("Hello, Cairo!");
println!("x = {}, y = {}", 10, 20);
占位符{}会被替换为传入的值。
使用format!创建一个ByteArray,而不立即打印:
let result = format!("{}-{}-{}", "tic", "tac", "toe");
println!("{}", result); // Output: tic-tac-toe
对于自定义类型,实现Display或者派生Debug来进行打印:
#[derive(Debug)]
struct Point { x: u8, y: u8 }
let p = Point { x: 3, y: 4 };
println!("{:?}", p); // Debug output: Point { x: 3, y: 4 }
使用{:x}将整数打印为十六进制:
println!("{:x}", 255); // Output: ff
在 Echoes 的魔法世界里,存在一种强大的咒语,叫做“EchoSpeak”。 这种咒语让巫师能通过说出的话语来传达自己的想法和观察,这些话语由魔法羽毛笔写下来。 要掌握这种咒语,巫师必须学会如何清晰简洁地组织自己的话语和想法,无论涉及的是数字、对象还是复杂的魔法构造。
作为巫师学徒,你的任务是掌握 EchoSpeak 的技艺。
这需要你学会如何把各种类型的魔法数据打印到附魔卷轴上。
EchoSpeak 的工作原理是使用一种由ByteArray表示的特殊魔法墨水,并使用诸如println!和print!这样的咒语将格式化后的信息铭刻到卷轴上。
然而,在处理像附魔物品或咒语这样的自定义魔法构造时,EchoSpeak 需要一种特殊咒文来理解如何表示这些对象。
这就是你的魔法派上用场的地方:学习为自定义魔法物品实现被称为traits的特殊咒语。
有时,巫师需要在把魔法词语铭刻到卷轴之前先对其进行格式化。 你将编写一个函数,把三个魔法词语格式化为一条消息。
实现一个名为format_magical_chant的函数,它返回一个格式为“chant1-chant2-chant3”的字符串。
示例:
let result = format_magical_chant("Spark", "Shine", "Glow");
assert_eq!(result, "Spark-Shine-Glow");
Echoes 的领域里充满了附魔物品。
其中一件物品是 EchoStone,它包含两个魔法属性:power 和 duration。
你的任务是实现stringify_echo_stone函数,它通过实现Display trait 将 EchoStone 转换为ByteArray,格式为"EchoStone [power: x, duration: y]"。
示例:
let stone = EchoStone { power: 100, duration: 300 };
assert_eq!(stringify(stone), "EchoStone [power: 100, duration: 300]");
作为巫师学徒,调试对于复杂的魔法构造至关重要。
你将创建一个函数,使用Debug trait 打印EchoStone以进行调试。
格式应为:"Debugging EchoStone: { power: x, duration: y }"。
示例:
let stone = EchoStone { power: 25, duration: 10 };
assert_eq!(format!("{:?}", stone), "Debugging EchoStone: { power: 25, duration: 10 }");