Rust之语法<1>变量绑定
2015-08-26 08:22
162 查看
事实上,每个非”Hello,World”的Rust程序都需要使用到变量绑定。就像这样:
其他编程语言把这个称为变量,但是Rust的变量绑定有所不同。例如,一个
这个表达式执行后,x的值是1,y的值是2.模式这个特点非常强大,这本书有单独的章节讲解它。
Rust是静态类型的语言,这意味着要在之前声明好我们的变量类型,然后再编译的时候检查的。那么我们的第一个例子是如何工作的呢?Rust把这个东西叫做”type inference(类型推断)”。如果类型推动能够推算出变量是什么类型的话,那么你就不必明确声明一个变量的类型。
如果我们想要明确指出变量类型的话,可以在
用自然语言表述就是:x绑定的类型是
在这个例子中,x代表的32位整数。Rust有许多初始的整数类型,它们开头以
以后,我们可能以注释的形式来声明变量类型。如下面:
在Rust中,变量绑定是immutable(不可改变)的。下面这段代码是错误的:
执行后,错误信息是:
如果想要绑定的变量可变,你可以使用
在Rust中,在使用变量前,要确保绑定变量要用一个值来初始化。
看下面的代码:
记住:Rust不会让我们使用一个没有初始化值的变量。
我们来看一下添加到
如果你在要打印的字符串中包含大括号” { }”的话,Rust会理解成你要在字符串中插入值。在上例中,我们在字符串中添加了一个” , “和” x “来表明” x “是我们想要插入的值。
fn main(){ let x=5; }
其他编程语言把这个称为变量,但是Rust的变量绑定有所不同。例如,一个
let表达式左边是一个”pattern(即模式)”,而不是一个变量名。这意味着我们可以这样写:
let (x,y)=(1,2);
这个表达式执行后,x的值是1,y的值是2.模式这个特点非常强大,这本书有单独的章节讲解它。
Rust是静态类型的语言,这意味着要在之前声明好我们的变量类型,然后再编译的时候检查的。那么我们的第一个例子是如何工作的呢?Rust把这个东西叫做”type inference(类型推断)”。如果类型推动能够推算出变量是什么类型的话,那么你就不必明确声明一个变量的类型。
如果我们想要明确指出变量类型的话,可以在
:后加上类型:
let x:i32 =5;
用自然语言表述就是:x绑定的类型是
i32,绑定的值是
5。
在这个例子中,x代表的32位整数。Rust有许多初始的整数类型,它们开头以
i代表有符号整数,
u代表无符号整数。可能的整数大小是8、16、32位。
以后,我们可能以注释的形式来声明变量类型。如下面:
fn main(){ let x=5;//x:i32 }
在Rust中,变量绑定是immutable(不可改变)的。下面这段代码是错误的:
let x=5; x=10;
执行后,错误信息是:
src/main.rs:3:5: 3:8 error: re-assignment of immutable variable `x` [E0384] src/main.rs:3 x=6; ^~~ src/main.rs:2:9: 2:10 note: prior assignment occurs here src/main.rs:2 let x=5;
如果想要绑定的变量可变,你可以使用
mut:
let mut x=5; x=6;
在Rust中,在使用变量前,要确保绑定变量要用一个值来初始化。
看下面的代码:
src/main.rs:3:39: 3:40 error: use of possibly uninitialized variable: `x` [E0381] src/main.rs:3 println!("The value of x is :{}",x);
记住:Rust不会让我们使用一个没有初始化值的变量。
我们来看一下添加到
println里面的内容:
如果你在要打印的字符串中包含大括号” { }”的话,Rust会理解成你要在字符串中插入值。在上例中,我们在字符串中添加了一个” , “和” x “来表明” x “是我们想要插入的值。
相关文章推荐
- Console.Read();
- java初体验和基本语法问题记录
- 6)Win10-UWA开发 应用生命周期
- Docker基础技术:DeviceMapper
- Docker基础技术:DeviceMapper
- Spring MVC form handling example
- 如果在 unity中滚动 3D 骰子
- 求余
- javamail发送邮件
- UI初级第七课  表视图的使用——iOS学习连载22
- c#中整型转为字符串型
- 【HDOJ 4272】 LianLianKan (vector深搜+剪枝)
- 05==数组(查找,添加,删除,排序)
- ZOJ3876 May Day Holiday
- windows下编译和安装boost库
- springMVC中得到request对象,session对象
- HTML5 Introduction
- Win10 10525预览版即将向Insider慢速通道推送
- SICP阅读笔记(一)
- [150826]Maven详解之聚合与继承