rust - 使用 println 打印不同次数的字符

标签 rust

我想使用 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/

相关文章:

enums - 我可以匹配所有具有相同值形状的枚举变体吗?

rust - 为什么不能在同一结构中存储值和对该值的引用?

rust - 是否可以下载以前的夜间构建?

generics - 我是否需要多个 impl block 来实现多个为类型参数设置具体类型的方法?

rust - 外部库作为对本地库的依赖

rust - 如何向现有原始类型添​​加构造函数?

rust - 在rust中有多种返回类型

rust - 如何将 number::Rational 转换为十进制数?

windows - 使用SDL2 crate 运行和构建程序时出现问题

enums - 为特定变体派生特征