Rust语言从入门到入坑——(4)Rust语法(上)


在这里插入图片描述

0 引入

在这里我们需要介绍Rust语法,一共分三部分,第一部分是基础语言,和C语言类比,如果有这样的基础,可以跳过本章,本章主要是说明和C语言一样的地方


1、基础语法

变量,基本类型,函数,注释和控制流,这些几乎是每种编程语言都具有的编程概念,首先应该明白:

  • Rust 是强类型语言,但具有自动判断变量类型的能力;
  • Rust 有其自己的安全机制:尽可能的少去改动已经定义的数据。

1.1、变量

  • 不可变变量:用let 定义 如: let a= 123;
  • 可变变量 :用 let mut 定义如:let mut b =456;

如下代码:

    let a = 123;         //1
    a = "abc";           //2
    a = 4.56;            //3
    a = 456;             //4
    let mut  b =456;     //5
    b = 789;             //6
    let a = 356;         //7

2错误:不能够赋值不同类型
3错误:精度丢失
4错误:不可重新使用,如果要重新赋值,参看6、7
6正确:可以重新赋值
7正确:可以支持重新使用之前的变量,但是1会有警告,定义的值未被使用

1.2、常量

既然不可变变量是不可变的,那不就是常量吗?为什么叫变量?
变量和常量还是有区别的,变量的值可以"重新绑定",但在"重新绑定"以前不能私自被改变,这样可以确保在每一次"绑定"之后的区域里编译器可以充分的推理程序逻辑,看下面代码:

    let a = 123;           //1 定义一个不可变变量
    let a = 356;           //2
    const b:i32 = 123;     //3  定义一个常量
    let b  = 456;          //4

2正确:变量支持重新赋值
4错误:不合法,常量不能重新赋值

1.3、重影

重影的概念与其他面向对象语言里的"重写"(Override)或"重载"(Overload)是不一样的。重影就是刚才讲述的所谓"重新绑定",之所以加引号就是为了在没有介绍这个概念的时候代替一下概念。
重影就是指变量的名称可以被重新使用的机制:如上1.1代码中的//7


2、数据类型

2.1、整形

主要数据类型如下表格:

位长度 有符号 无符号
8bit i8 u8
16bit i16 u16
32bit i32 u32
64bit i64 u64
128bit i128 u128
arch isize usize

注:isize 和 usize 两种整数类型是用来衡量数据大小的,它们的位长度取决于所运行的目标平台,如果是 32 位架构的处理器将使用 32 位位长度整型
整数的表示方法还有如下形式:

进制 例子
十进制 10_100
八进制 0xFF
二进制 0o10
字节(只能表示u8) b’C’

注:有的整数中间存在一个下划线,这种设计可以让人们在输入一个很大的数字时更容易判断数字的值大概是多少

2.2、浮点型

Rust 与其它语言一样支持 32 位浮点数(f32)和 64 位浮点数(f64),默认情况下,64.0 将表示 64 位浮点数。

代码如下(示例):

fn main() {
    
    
    let x = 2.0;      // f64 
    let y: f32 = 3.0; // f32
}

2.3、其他

其他和C语言很相似了、如布尔型 bool 字符型char
符合类型:元组(),数组[]

如下例子:

let tup: (i32, f64, u8) = (500, 6.4, 1);   //可以包含不同类型
let a = [1, 2, 3, 4, 5];                   //同类型

注:Rust 不支持 ++ 和 –

3、注释与打印

3.1 注释

Rust 中的注释方式与其它语言(C、Java)一样,支持两种注释方式:

// 这是第一种注释方式

/* 这是第二种注释方式 */

/*
 * 多行注释
 * 多行注释
 * 多行注释
 */

注 Cargo 具有 cargo doc 功能,开发者可以通过这个命令将工程中的说明注释转换成 HTML 格式的说明文档。

3.2、打印

主要两个函数,Rust 输出文字的方式主要有两种:println!() 和 print!()
主要区别是后者回复加一个换行符

   let a = 123;
   println!("{}",a);     //{} 相当于占位符
   println!("456");

4、总结

本章总结Rust部分语法,其实和大多数主流语言一样,rust只是在行为上稍加不一样,主要是保证语言的高效性!


猜你喜欢

转载自blog.csdn.net/ljsant/article/details/131240832