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

相关推荐
qq_4298796739 分钟前
省略号和可变参数模板
开发语言·c++·算法
飞川撸码2 小时前
【LeetCode 热题100】网格路径类 DP 系列题:不同路径 & 最小路径和(力扣62 / 64 )(Go语言版)
算法·leetcode·golang·动态规划
Neil今天也要学习2 小时前
永磁同步电机参数辨识算法--IPMSM拓展卡尔曼滤波全参数辨识
单片机·嵌入式硬件·算法
yzx9910133 小时前
基于 Q-Learning 算法和 CNN 的强化学习实现方案
人工智能·算法·cnn
亮亮爱刷题3 小时前
算法练习-回溯
算法
眼镜哥(with glasses)4 小时前
蓝桥杯 国赛2024python(b组)题目(1-3)
数据结构·算法·蓝桥杯
老胖闲聊7 小时前
Python Copilot【代码辅助工具】 简介
开发语言·python·copilot
Blossom.1187 小时前
使用Python和Scikit-Learn实现机器学习模型调优
开发语言·人工智能·python·深度学习·目标检测·机器学习·scikit-learn
曹勖之7 小时前
基于ROS2,撰写python脚本,根据给定的舵-桨动力学模型实现动力学更新
开发语言·python·机器人·ros2
lyaihao8 小时前
使用python实现奔跑的线条效果
python·绘图