《Rust权威指南》 第3章 通用编程概念

变量与可变性

变量默认不可变,一旦被绑定到某个值,就不再被改变了。也就是以下操作是非法的

let x = 5;
x = 6;

通过在声明时添加关键词mut,将变量变成可变的let mut x = 5;

常量

使用const来声明常量,const MAX:u32 = 100

  • 不能使用mut来修饰常量
  • 常量可以被声明在任何作用域
  • 常量只能绑定到常量表达式上。而类似函数的返回值这样需要在运行时进行计算的值不能被绑定到常量上
  • 常量必须显式的指定类型

隐藏

新声明的变量可以覆盖掉旧的同名变量

let x = 0;
let x = x+1;

隐藏机制与mut的区别在于

  • 每次覆盖时都是新创建一个变量
  • 由于只是复用名称,所以可以改变类型

数据类型

Rust是静态类型语言,大部分情况下编译器可以自动推导变量类型,某些时候需要我们手动添加类型

标量类型

整数类型

i8~i32,u8~u32,分别对应8~32位的有符号、无符号整数,对于整数字面量,默认推导是i32。顺便一提在整数字面量中可以使用_作为分隔符方便阅读,如10_000

浮点数类型

f32,f64,由于效率相差无几,但f64有更高精度,所以浮点数字面量都是默认推导f32

布尔类型

bool只有两个值,truefalse,仅占一个字节大小

字符类型

char,占4字节,是一个unicode标量值。其字面量是用单引号括起来的

复合类型

元组

元组有固定长度,声明一个元组由下所示

let tup:(i32,f64,u8) = (500,6.4,1);

取一个元组中的值可以通过:

  • 通过模式匹配来解构元组:let (x,y,z) = tup;,这意味着x对应500,依顺序类推
  • 通过.索引来访问,tup.0,tup.1,tup.2就对应着500,6.4,1

数组

数组拥有固定长度,且内部元素也是同一类型

数组的类型声明是[元素类型;数组大小]

let a: [i32:5] = [1,2,3,4,5];

可以方便的创建具有相同元素的数组,使用[元素;元素个数]

let a = [3;5]

当问数组元素,使用a[i],这个与所有语言都是一样的

函数

基本的声明方式

fn 函数(参数列表) -> 返回值类型 {
	函数体
}

语句和表达式

  • 语句是指执行操作但是不返回值的指令,比如let y = 6;
  • 表达式是指那些进行计算,并返回一个值作为结果的指令。比如函数的调用,比如5+6

再比如

let y = {
	let x= 3;
	x+1
}

在大括号括起来的这段代码块中,最后没有加上;,此时会将x+1的结果4返回,作为这个代码块的返回值,绑定到y

函数返回值

可以显式的使用return

fn square(x:i32) -> i32 {
	return x*x;
}

可以根据我们上面的讨论,以一个表达式作为函数定义体的结尾,表示返回该表达式的值

fn square(x:i32) -> i32 {
	x*x
}

控制流

if表达式

与其它语言没有任何不同

if number%4==0 {
	...
} else if number %3  == 0{
	...
}else {
	...
}

在let中使用if

let number = if condition {
		5
	}else {
		6
	};

有点像三目运算符:?

循环

loop循环

loop循环是一值进行循环,直到我们使用break显式的退出

loop {
	干一些事;
	if 某个条件 {
		break; //退出循环
	}
}
从 loop循环中返回值

像使用return一样使用break

let mut counter = 0;
let result = loop {
	counter += 1;
	if counter == 10 {
		break count*2;
	}
};

将要返回的表达式写在break后面

while循环

while 条件 {

}

和其他语言美与任何区别

for循环

像是python那样使用for循环

let a = [1,2,3,4,5];
for i in a.iter() {
	println!("the value is:{}",i);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值