Друк у 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, яка повертає відформатований рядок тексту (англ. string) у формі "chant1-chant2-chant3".
Приклад:
let result = format_magical_chant("Spark", "Shine", "Glow");
assert_eq!(result, "Spark-Shine-Glow");
Світ 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]");
Як учням чарівника, нам не обійтися без налагодження, коли ми маємо справу зі складними магічними конструкціями.
Ми створимо функцію, яка друкує 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 }");
Зареєструйтеся на Exercism, щоб вивчати й опановувати Cairo, а також 25 концепцій68 вправ та справжнє наставництво від людей, і все це безкоштовно.