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 中的占位符则更加灵活,可以通过在 {} 中指定格式化选项来实现更复杂的格式化需求。

相关推荐
南玖yy12 分钟前
数据结构C语言练习(栈)
c语言·数据结构·算法
冷月半明23 分钟前
Python项目打包指南:PyInstaller与SeleniumWire的兼容性挑战及解决方案
python·selenium
冷月半明23 分钟前
《Pandas 性能优化:向量化操作 vs. Swifter 加速,谁才是大数据处理的救星?》
python·数据分析·pandas
阿镇吃橙子25 分钟前
一些手写及业务场景处理问题汇总
前端·算法·面试
酱酱哥玩AI29 分钟前
Trae编译器:实现多目标班翠鸟优化算法(IPKO)无人机路径规划仿真(Python版),完整代码
算法
蹦蹦跳跳真可爱58930 分钟前
Python----机器学习(基于PyTorch的线性回归)
人工智能·pytorch·python·机器学习·线性回归
MPCTHU42 分钟前
二叉树、排序算法与结构图
数据结构·算法·排序算法
亓才孓1 小时前
[leetcode]树的操作
算法·leetcode·职场和发展
搞不懂语言的程序员1 小时前
装饰器模式详解
开发语言·python·装饰器模式
mosquito_lover11 小时前
矿山边坡监测预警系统设计
人工智能·python·深度学习·神经网络·视觉检测