Rust语言入门第三篇-输出到命令行+占位符

文章目录

Rust语言入门第三篇-输出到命令行

介绍

在学习 Rust 语言之前,掌握如何将文字输出到命令行几乎是必不可少的。这是因为在学习阶段,向命令行输出结果几乎是唯一的方式。

Rust 提供了两种主要的输出文字的方式:println!()print!()。这两个 "函数" 都可以向命令行输出字符串,但区别在于前者会在输出的末尾附加一个换行符。值得一提的是,println!()print!() 实际上不是函数,而是宏规则(macro)。

大家可能很疑惑为什么 println!("Hello World") 中的 println 后面还有一个 ! 符号,难道 Rust 中所有的函数调用都需要在函数名后面加一个感叹号?显然,并不是这样。事实上,println 并不是一个普通的函数,而是一个宏(macro)规则。

宏是 Rust 中的一种强大的功能,允许在编译时执行元编程,从而可以生成代码。宏允许程序员编写类似于函数调用的语法,但在编译时会展开成更复杂的代码。这种特性使得 Rust 中的宏非常灵活,可以用于各种目的,例如代码重用、模式匹配等。

在 Rust 中,宏的调用需要在宏名后面加上感叹号 !,以区别于普通的函数调用。因此,当我们写 println!("Hello, World!") 时,println 实际上被展开为一系列代码,用于在命令行输出字符串 "Hello, World!",并在最后添加一个换行符。

虽然这里不需要深入了解宏的工作原理,但这种语法的存在使得 Rust 具有强大的元编程能力,可以在编译时生成复杂的代码结构,从而提高代码的灵活性和可维护性。

println! 和 print!

因此,要输出一段文字到命令行,可以使用以下方式:

rust 复制代码
println!("Hello, World!");

或者:

rust 复制代码
print!("Hello, World!");

第一个示例中的 println!() 会在输出后自动添加一个换行符,而第二个示例中的 print!() 则不会。

占位符{}

c 复制代码
fn main() { 
    let a = 12; 
    println!("a is {}", a); 
}

在 Rust 中,{} 是一种格式化字符串的占位符,用于在打印或格式化文本时插入变量的值。在上面的代码中,println!("a is {}", a) 中的 {} 就是一个占位符,它表示在输出时将变量 a 的值插入到该位置。

具体来说,{} 表示使用默认的格式化方式输出变量的值。对于整数类型,就是以十进制方式输出;对于浮点数类型,就是以小数点形式输出;对于字符串类型,就是直接输出字符串等等。

如果需要指定更复杂的格式,比如控制小数点后的位数,或者指定对齐方式等,可以在 {} 中使用更多的格式化选项。例如:

  • {:.2} 表示保留两位小数;
  • {:<10} 表示左对齐并占据10个字符的宽度;
  • {:^10} 表示居中对齐并占据10个字符的宽度;
  • 等等。

但在上面的代码中,我们只使用了最简单的 {} 占位符,因此打印出的文本将会是 "a is 12",其中 12 是变量 a 的值。

可能小伙伴想到多个可以不可,可以的

c 复制代码
fn main() {
    let x = 5;
    let v = 5;
    println!("The value of x is:{},The value of v is:{}",x,v);
}

java 对比Rust的输出到命令行+占位符

如果看到这里为什么我要搞个对比 哈哈哈 凑字

输出到命令行

在 Java 中,System.out.println()System.out.print() 是用于在控制台输出文本的两个方法。它们的区别在于:

  • System.out.println() 输出文本后会自动换行,而 System.out.print() 则不会自动换行,会在同一行继续输出。

而在 Rust 中,println!print! 是用于格式化输出文本的两个宏。它们的区别与 Java 中类似:

  • println! 输出文本后会自动换行,而 print! 则不会自动换行,会在同一行继续输出。

所以,两者的区别在于是否在输出后自动换行。这种区别在编写需要格式化输出的文本时非常有用,可以根据需求选择适合的宏来实现所需的输出行为。

占位符

在 Java 中,常用的占位符主要是通过 String.format() 方法来实现的,通常使用 % 后跟一个字母来表示不同类型的数据。例如:

  • %s 表示字符串
  • %d 表示整数
  • %f 表示浮点数
  • %b 表示布尔值
  • 等等

在 Rust 中,常用的占位符主要是通过格式化宏 format!println!print! 来实现的,使用 {} 来表示占位符,通常会在 {} 中指定变量或者表达式。例如:

  • {} 表示默认格式化输出
  • {:.2} 表示保留两位小数
  • {:<10} 表示左对齐并占据10个字符的宽度
  • {:^10} 表示居中对齐并占据10个字符的宽度
  • 等等

因此,Java 中的占位符是通过特定的符号表示不同类型的数据,而 Rust 中的占位符则更加灵活,可以通过在 {} 中指定格式化选项来实现更复杂的格式化需求。

相关推荐
波波0072 分钟前
每日一题:.NET 中什么是 LOH(大对象堆)?为什么频繁使用大数组或大字符串可能导致性能问题?如何优化?
java·jvm·算法
独自破碎E3 分钟前
动态规划-正则表达式匹配
算法·正则表达式·动态规划
Gofarlic_OMS3 分钟前
Fluent许可证使用合规性报告自动化生成系统
java·大数据·运维·人工智能·算法·matlab·自动化
漫随流水4 分钟前
leetcode回溯算法(131.分割回文串)
数据结构·算法·leetcode·回溯算法
衫水5 分钟前
如何在离线情况下部署项目(前端VUE + 后端Python)
前端·vue.js·python
【赫兹威客】浩哥6 分钟前
【赫兹威客】框架模板-后端命令行部署教程
python·django
Java后端的Ai之路6 分钟前
【Python小知识】-self是什么?
linux·python··self
Sylvia33.7 分钟前
如何获取足球数据统计数据API
java·前端·python·websocket·数据挖掘
我家大宝最可爱7 分钟前
强化学习基础-重要性采样
算法·机器学习·概率论
zyb11475824338 分钟前
JVM的学习
jvm·python·学习