【rust】Rust变量绑定(3)

Rust 是一个静态类型语言,这意味着咱们须要先肯定咱们须要的类型。安全

什么是变量绑定?

将一些值绑定到一个名字上,这样能够在以后使用他们。spa

 

如何声明一个绑定?

使用 let 关键字:code

fn main() {
  let x = 1;
}

关于类型:Rust有一个叫作类型推断的功能。若是它能确认这是什么类型,Rust 不须要你明确地指出来。blog

如何指定类型?

类型写在一个冒号( : )后面:作用域

let x: i32 = 5;

类型都有哪些?(后面会进行连接)编译器

绑定值如何修改?

绑定默认是不可变的,也就是不能被修改。例以下面的(错误)作法:编译

let x = 5;
x = 10;

若是想要使变量绑定可变,使用 mut class

let mut x = 5; // mut x: i32
x = 10;

不止一个理由使得绑定默认不可变的,不过咱们能够经过一个 Rust 的主要目标来理解它:安全。若是你没有使用 mut ,编译器会捕获它,让你知道你改变了一个你可能并不打算让它改变的值。若是绑定默认是可变的,编译器将不可能告诉你这
些。若是你确实想变量可变,解决办法也很是简单:加个 mut 。变量

 

关于变量做用域

变量绑定有一个做用域 - 他们被限制只能在他们被定义的块中存在。一个块是一个被 { 和 } 包围的语句集合。语言

fn main() {
let x: i32 = 17;
{
let y: i32 = 3;
println!("The value of x is {} and value of y is {}", x,
y);
}
println!("The value of x is {} and value of y is {}", x, y);
// This won't work.
}

咱们定义了两个变量绑定, x 和 y ,他们位于不一样的做用域中。 x 能够在 fn main() {} 块中被访问,而 y 只能在内部块内访问。第一个 println! 将会打印“The value of x is 17 and the value of y is 3”,不过这个并
不能编译成功,由于第二个 println! 并不能访问 y 的值,由于它已不在做用域中。

 

 

关于变量隐藏(重定义)

一个后声明的并位于同一做用域的相同名字的变量绑定将会覆盖前一个变量绑定,隐藏容许咱们将一个名字重绑定为不一样的类型。它也能够改变一个绑定的可变性。注意隐藏并不改变和销毁被绑定的值,这个值会在离开做用域以前继续存在,即

便没法经过任何手段访问到它。

相关文章
相关标签/搜索