Rust学习笔记(一)——输出到命令行
Hello World
按照学习计算机语言的惯例,第一步是实现输出Hello World。 代码如下:
fn main() {
println!("Hello World");
}
在工程文件夹下,依次运行如下命令:
cargo build
cargo run
就可以看到输出的结果:
Hello World
Rust 输出文字的方式主要有两种:println!() 和 print!()。这两个宏(如果是调用函数,则不加”!“,即println,这个有啥区别还没学到:D,学到了再做笔记)都是向命令行输出字符串的方法,区别仅在于前者会在输出的最后附加输出一个换行符。
格式化输出
占位符"{}"
当用这两个宏输出信息的时候,第一个参数是格式字符串,后面是一串参数,对应着格式字符串中的"占位符",各个可变参数之间要用逗号",“隔开。这一点与 C 语言中的 printf 函数很相似。但是,Rust 中格式字符串中的占位符不是”% + 字母"的形式,而是一对 {}。
例如:
fn main() {
let a=27;
println!("Age is {}.",a);
}
这段代码运行的结果为:
Age is 27.
多个占位符
当需要多个占位符时,每个个占位符必须要有相应的参数。
例如:
fn main() {
let a=27;
let m=64;
println!("Age is {},weight is {}.",a,m);
}
这段代码运行的结果为:
Age is 27,weight is 64.
下面一段代码是错误的,存在无参数可引用的占位符,将无法通过编译。
fn main() {
println!("{},{},{}",27,64);
}
参数数组
(这个概念是我自己命名的,官方说法是啥没注意了。)当多个占位符引用相同的参数时,可以不需要重复写入参数名,Rust提供了一个非常好的解决方案。
下面一段代码:
fn main() {
println!("一{0}两{0}三四{0},五六七八九十{0}。
千{0}万{0}无数{0},飞入梅花都不见。","片");
}
运行结果为:
参数只有一个”片“,但是重复引用了多次。参数是被以类似数组的方式引用的。
Index | 0 | 1 | 2 | … |
---|---|---|---|---|
Value | 参数1 | 参数2 | 参数3 | … |
所以,只要标明每次调用的参数对应的Index就可以重复的引用参数了。如果不写参数Index,那么,Rust默认从参数1开始,依次递增引用。
下边的这段代码就很好的说明了这种情况:
fn main() {
println!("{1},{},{2},{},{}",1,2,3);
}
运行结果为:
2,1,3,2,3
参数数组如下:
Index | 0 | 1 | 2 |
---|---|---|---|
Value | 1 | 2 | 3 |
第一个占位符"{1}"表示引用Index为”1“的参数,其值为”2“,第二个占位符没有标明Index,从Index为”0“的第一个参数开始引用,故其值为”1“,第三个占位符引用Index为”2“的参数,其值为”3“,第四个占位符未标明Index,从上一个默认引用的参数递增一个引用,也就是Index未”1“的参数,即为第二个参数,其值为”2“,同理,第五个占位符引用的是Index为”3“的参数,其值为”3“。