مسیرها
/
Cairo
Cairo
/
تمرین‌ها
/
قلمرو پژواک‌ها
قلمرو پژواک‌ها

قلمرو پژواک‌ها

تمرین یادگیری

مقدمه

چاپ در Cairo به شما امکان می‌دهد تا هنگام اجرای برنامه پیام‌ها یا اطلاعات Debug را نمایش دهید.

مبانی

Cairo دو ماکرو برای چاپ در اختیار شما می‌گذارد:

  • println!: یک پیام را به همراه یک خط جدید چاپ می‌کند.
  • print!: یک پیام را بدون خط جدید چاپ می‌کند.
println!("Hello, Cairo!"); 
println!("x = {}, y = {}", 10, 20); 

جانگهدارهای {} با مقادیر ارائه‌شده جایگزین می‌شوند.

قالب‌بندی رشته‌ها

برای ساختن یک ByteArray بدون چاپ فوری، از format! استفاده کنید:

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 است که با پیاده‌سازی trait Display، یک EchoStone را به یک ByteArray در قالبی ویژه، "EchoStone [power: x, duration: y]"، تبدیل می‌کند.

مثال:

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

3. اشکال‌زدایی جادو

به عنوان کارآموز جادوگر، اشکال‌زدایی برای ساختارهای جادویی پیچیده ضروری است. شما تابعی می‌سازید که با استفاده از trait Debug، یک 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 ثبت‌نام کنید تا Cairo را همراه با 25 مفهوم68 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.