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

相关推荐
Greedy Alg几秒前
LeetCode 236. 二叉树的最近公共祖先
算法
爱吃生蚝的于勒18 分钟前
【Linux】零基础学会Linux之权限
linux·运维·服务器·数据结构·git·算法·github
咖啡续命又一天24 分钟前
python 自动化采集 ChromeDriver 安装
开发语言·python·自动化
兮山与1 小时前
算法3.0
算法
ZC·Shou1 小时前
Rust 之二 各组件工具的源码、构建、配置、使用
rust·cargo·rustup·mdbook·clippy
爱编程的化学家1 小时前
代码随想录算法训练营第27天 -- 动态规划1 || 509.斐波那契数列 / 70.爬楼梯 / 746.使用最小花费爬楼梯
数据结构·c++·算法·leetcode·动态规划·代码随想录
松果集1 小时前
【1】数据类型2
python
CoovallyAIHub1 小时前
告别等待!十条高效PyTorch数据增强流水线,让你的GPU不再"饥饿"
深度学习·算法·计算机视觉
且慢.5892 小时前
命令行的学习使用技巧
python