以下显然不起作用:
fn main() {
for i in range(1i, 101) {
println!("{}", if i % 15 == 0 {
"Fizzbuzz"
} else if i % 5 == 0 {
"Buzz"
} else if i % 3 == 0 {
"Fizz"
} else {
i
});
};
}
它可以像这样工作:
fn main() {
for i in range(1i, 101) {
println!("{}", if i % 15 == 0 {
"Fizzbuzz".to_string()
} else if i % 5 == 0 {
"Buzz".to_string()
} else if i % 3 == 0 {
"Fizz".to_string()
} else {
i.to_string()
});
}
}
但是使用if / else和表达式以类似方式使它工作的最优雅(可能是惯用的)方法是什么?
答案 0 :(得分:5)
comprehensive exploration of FizzBuzz使用名为MaybeOwned
的现已弃用的结构。这是更新后的版本,名称为CowString
:
use std::borrow::Cow;
fn main() {
for i in 1..10 {
println!("{}", if i % 15 == 0 {
Cow::Borrowed("Fizzbuzz")
} else if i % 5 == 0 {
Cow::Borrowed("Buzz")
} else if i % 3 == 0 {
Cow::Borrowed("Fizz")
} else {
Cow::Owned(i.to_string())
});
};
}
但是,您应该阅读完整的博客文章以获得最大教育!