«کنترل جریان» در Cairo به شما امکان میدهد مسیر اجرای برنامههایتان را بر اساس شرطها و تکرار کنترل کنید.
از عبارتهای if برای اجرای کد بر اساس شرطها استفاده کنید:
let number = 42;
if number > 0 {
println!("Positive number");
} else if number < 0 {
println!("Negative number");
} else {
println!("Zero");
}
if یک عبارت است، بنابراین میتواند مقدار برگرداند:
let result = if condition { 5 } else { 10 };
از loop برای تکرار کد استفاده کنید.
یک حلقه بیپایان اجرا میشود مگر اینکه آن را متوقف کنید؛ برای خروج از حلقه وقتی شرطی برقرار میشود، از break استفاده کنید.
let mut counter = 0;
loop {
if counter == 5 {
break;
}
println!("Counter: {}", counter);
counter += 1;
}
حلقه میتواند با استفاده از break مقدار برگرداند:
let result = loop {
counter += 1;
if counter == 10 {
break counter * 2; // Returns 20
}
};
از continue برای پرش به تکرار بعدی استفاده کنید:
let mut i = 0;
loop {
i += 1;
if i % 2 == 0 {
continue; // Skip even numbers
}
if i > 10 {
break;
}
println!("{}", i); // Only prints odd numbers
}
در این تمرین به مدیریت عملیات روزانهی یک نانوایی کوچک با استفاده از ساختارهای کنترل جریان Cairo کمک میکنید.
calculate_total را پیادهسازی کنید که هزینهی یک سفارش را بر اساس نوع شیرینی و تعداد آن محاسبه میکند:
calculate_total(Pastry::Croissant, 4) // Returns: 12 (4 * 3)
calculate_total(Pastry::Cookie, 10) // Returns: 10 (10 * 1)
apply_discount را پیادهسازی کنید که بر اساس مبلغ کل سفارش تخفیف اعمال میکند.
درصد تخفیف را روی مبلغ کل اعمال کنید و سپس آن را به نزدیکترین عدد صحیح سکه گرد کنید (گرد کردن به پایین).
apply_discount(25) // Returns: 22
apply_discount(15) // Returns: 14
apply_discount(8) // Returns: 8
baking_schedule را پیادهسازی کنید که برنامهی پخت روزانه را میسازد.
نانوایی در دستههای ۵ سفارشی در هر ساعت میپزد:
baking_schedule(18) // Returns: [5, 5, 5, 3] (3 full batches + 3 remaining)
baking_schedule(10) // Returns: [5, 5] (2 full batches)
baking_schedule(3) // Returns: [3] (1 partial batch)
برای حل کارآمد هر مسئله از ساختارهای کنترل جریان مناسب (if/else، loop) استفاده کنید.