轨道
/
Cairo
Cairo
/
练习
/
回声之境
回声之境

回声之境

学习练习

简介

在 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的特殊咒语。

1. 格式化魔法词语

有时,巫师需要在把魔法词语铭刻到卷轴之前先对其进行格式化。 你将编写一个函数,把三个魔法词语格式化为一条消息。

实现一个名为format_magical_chant的函数,它返回一个格式为“chant1-chant2-chant3”的字符串。

示例:

let result = format_magical_chant("Spark", "Shine", "Glow");
assert_eq!(result, "Spark-Shine-Glow");

2. 回显自定义附魔物品

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]");

3. 调试魔法

作为巫师学徒,调试对于复杂的魔法构造至关重要。 你将创建一个函数,使用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 }");
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Cairo Exercism

准备好开始 回声之境 了吗?

注册 Exercism,借助 25 个概念68 个练习 和真人导师指导,学习并掌握 Cairo,全部免费。