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,根據訂單總額套用折扣。
先將折扣百分比套用到總額,再無條件捨去,取最接近的整數硬幣(floor)。
apply_discount(25) // Returns: 22
apply_discount(15) // Returns: 14
apply_discount(8) // Returns: 8
實作baking_schedule,建立每日的烘焙計畫。
烘焙坊每小時以 5 筆訂單為一批進行烘焙:
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)來有效率地解決每個問題。