我想使用 println!
和强大的格式化工具 format!
将一个字符打印特定次数。当然,这可以通过循环实现,如下所示:
fn give_love(count: usize) {
print!("Here is love for you: ");
for i in 0..count {
print!("♥");
}
println!("");
}
但我既不想编写循环,也不想编写三个 print
。如何做得更短/更好?
最佳答案
您的代码的解决方案
fn give_love(count: usize) {
println!("Here is love for you: {:♥<1$}", "", count);
}
解释
您可以(错误地)使用允许使用您选择的某些字符填充打印值的填充功能。仅此功能的语法如下所示:
'{' ':' <fill> <align> <width> '}'
在哪里width
是常数或对 <argument_index> '$'
类型参数的引用.所以3
将意味着宽度为常量 3 和 1$
表示 println!
的第一个参数值的宽度.
但是:这里我们有点“误用”了这个特性,我们不能忘记我们只是为一些其他可打印的东西指定了“填充”,它通过参数传递给println
。 .不过,这可以是一个空字符串。
println!("love: {:♥<3}", ""); // love: ♥♥♥
println!("love: {:♥<1$}", "", 5); // love: ♥♥♥♥♥
下面是一些我们不传递空字符串的例子:
println!("love: {:♥<5}", "#"); // love: #♥♥♥♥
println!("love: {:♥>5}", "#"); // love: ♥♥♥♥#
println!("love: {:♥^5}", "#"); // love: ♥♥#♥♥
关于rust - 使用 println 打印不同次数的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35280798/