【发布时间】:2021-04-11 18:45:12
【问题描述】:
这里只是一个学习 Rust 的新手。
当您有多个循环时,如本例所示。是否有一种简单/惯用的生锈方法将它们全部组合成一个循环?或者也许只是一种更聪明的方法?
代码
#[derive(Debug)]
enum USCoin {
Penny,
Nickel,
Dime,
Quarter,
HalfDollar
}
fn make_change(mut value: f64) -> Vec<USCoin> {
let mut change: Vec<USCoin> = vec![];
while value >= 0.50 && value > 0.25 {
change.push(USCoin::HalfDollar);
value = value - 0.50;
}
while value >= 0.25 && value > 0.10 {
change.push(USCoin::Quarter);
value = value - 0.25;
}
while value >= 0.10 && value > 0.05 {
change.push(USCoin::Dime);
value = value - 0.10;
}
while value >= 0.05 && value > 0.01 {
change.push(USCoin::Nickel);
value = value - 0.05;
}
while value >= 0.01 && value != 0.0{
change.push(USCoin::Penny);
value = value - 0.01;
}
return change;
}
fn main() {
let change: Vec<USCoin> = make_change(2.43);
println!("{:?}", change);
}
【问题讨论】:
-
鉴于这是有效的代码,并且您正在寻找改进(一个令人钦佩的目标),您可能会在 Code Review StackExchange 上获得更好的运气,这是一个专门为此目的而构建的网站。
-
请注意,您的测试是多余的:
value >= 0.50 && value > 0.25仅相当于value >= 0.50 -
强制性警告:切勿使用浮点数数钱
-
我通过这个很快了解到...我最终使用了像“134”这样的值,然后除以 100 得到 1.34。非常好的建议警告 Krish!
标签: rust