Треки
/
Cairo
Cairo
/
Вправи
/
Царство відлунь
Царство відлунь

Царство відлунь

Навчальна вправа

Вступ

Друк у Cairo дає змогу виводити повідомлення або інформацію для налагодження під час виконання програми.

Основи

Cairo надає два макроси для друку:

  • println!: виводить повідомлення і додає символ нового рядка.
  • print!: виводить повідомлення без символу нового рядка.
println!("Hello, Cairo!"); 
println!("x = {}, y = {}", 10, 20); 

Замісники {} замінюються на передані значення.

Форматування рядків тексту (англ. string)

Використаймо 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, яка повертає відформатований рядок тексту (англ. string) у формі "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, яка перетворює EchoStone на ByteArray в особливому форматі "EchoStone [power: x, duration: y]", реалізувавши трейт Display.

Приклад:

let stone = EchoStone { power: 100, duration: 300 };
assert_eq!(stringify(stone), "EchoStone [power: 100, duration: 300]");

3. Налагодження магії

Як учням чарівника, нам не обійтися без налагодження, коли ми маємо справу зі складними магічними конструкціями. Ми створимо функцію, яка друкує EchoStone для налагодження за допомогою трейту Debug. Формат має бути таким: "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, щоб вивчати й опановувати Cairo, а також 25 концепцій68 вправ та справжнє наставництво від людей, і все це безкоштовно.