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),高效地解决每个问题。