• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Rust: 变量

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

变量的概念来源于数学,在计算机语言中,它是数据存取的基本单位。

在 Rust 中,变量有很多不同于其他语言的地方,今天就来简单介绍一下。

变量声明

直接看下面代码:

fn main() {
    // 使用let关键字声明一个变量
    let a = 1;
    
    // 也可以附带类型信息
    let b: i32 = 3;
    
    println!("{} {}", a, b);
}

Rust 使用 let 关键字来声明变量,乍一看,很像是动态语言,其实 Rust 是一门强类型语言,只不过编译器会根据变量的初始值推导出类型的。

当然,我们也可以明确地为变量指定它的类型,只需要在变量名后面,加上冒号和类型名即可。

上面代码中,变量 b 的类型是 i32,即 32 位有符号整数(32-bit signed integer),关于数据类型,我们后续会介绍到,这里简单了解就行了。

需要注意的是,如果声明一个变量时,没有为其指定初始值,那就必须带上类型信息:

fn main() {
    // 无初始值时 必须附带类型信息
    let a: i32;

    a = 1;

    println!("{}", a);
}

可变性

使用 let 声明的变量,默认是不可变的(immutable),初学 Rust 的朋友,可能在不经意间就踩了坑:

fn main() {
    let a = 1;
    
    println!("{}", a);
    
    // 编译器报错:不能二次赋值
    a = 3;
    
    println!("{}", a);
}

如果想在后续的代码中,对指定的变量进行更改,我们需要在声明时,为这个变量加上一个 mut 的限定词,表示这个变量是可变的(mutable),即可被更改的:

fn main() {
    // 需要加上mut关键字
    // 表示该变量是mutable的
    let mut a = 1;
    
    println!("{}", a);
    
    // 成功被赋值
    a = 3;
    
    println!("{}", a);
}

不过,可不要忘了,Rust 是强类型语言,它仍然会检查赋值的类型:

fn main() {
    let mut a = 1;
    
    // 编译报错 类型不符
    a = "HelloWorld";
    
    println!("{}", a);
}

变量遮盖

与其他编程语言不太一样的是,Rust 允许在当前作用域重复声明多个同名变量,后面声明的变量,会遮盖前面声明的同名变量:

fn main() {
    let a = 1;
    
    println!("{}", a);
    
    // 重新声明一个同名变量
    let a = a * 3;
    
    println!("{}", a);

    // 允许不同类型
    let a = "HelloWorld";
    
    println!("{}", a);
}

常量

虽然使用 let 声明的变量,默认是不可更改的,但不适合作为常量使用,编译器会强制 let 变量使用 snake case 的命名风格,即 my_friend 全小写的方式,并且它不能在全局作用域声明。

在 Rust 中,声明一个常量需要使用 const 关键字:

// 全局常量
const MAX_COUNT: i32 = 100;

fn main() {
    println!("{}", MAX_COUNT);
}

需要注意的是,常量必须采用全大写方式,也必须附带类型信息,最后,必须给定初始值。

变量这一部分,就先介绍到这里了。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
强大的Rust还是简单的Go?我选择了Go发布时间:2022-07-18
下一篇:
MATLAB的4种开源替代品发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap