在 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 }");