编辑代码

//------PART3--函数
//函数中的变量都是小写字母并使用下划线分割单词

/*参数:形参(parameters),实参(arguments)*/

//在函数签名中,必须声明每个参数的类型。
//这是 Rust 设计中一个经过慎重考虑的决定:要求在函数定义中提供类型注解,
//意味着编译器不需要你在代码的其他地方注明类型来指出你的意图。
fn another_function(x:i32){
    println!("The value is {}",x);
}
/*多个参数*/
fn print_labeled_measurement(value: i32, unit_label: char) {
    println!("The measurement is: {}{}", value, unit_label);
}

//语句和表达式
//函数体由一系列的语句和一个可选的结尾表达式构成
//因为 Rust 是一门基于表达式(expression-based)的语言,这是一个需要理解的(不同于其他语言)重要区别

//语句(Statements)是执行一些操作但不返回值的指令
//表达式(Expressions)计算并产生一个值。

//这是一个语句
// let y = 6;
//所以下面会报错
//这与C不同,C的赋值语句会返回所赋的值,而Rust不会
// let x = (let y =6)
//而表达式会计算出一个值,5+6,let y=6中的6,函数调用,宏调用,大括号创造的新的作用域
//以下y的值为4
// let y = {
//         let x = 3;
//         x + 1
// };

/*具有返回值的函数*/
//在 Rust 中,函数的返回值等同于函数体最后一个表达式的值。使用 return 关键字和指定值
fn five() -> i32 {
    5
}


fn main() {
    //------PART1-变量和可变性










    //------PART2-数据类型
    //Rust有两类数据类型:标量,复合

    //标量类型代表一个单独的值,有4种基本的标量类型:整型,浮点型,布尔类型,字符类型

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

    //浮点型
    //Rust的默认浮点类型为f64,也就是双精度

    //布尔型
    //true,false

    //字符类型
    //Rust的char类型为4个字节,代表一个Unicode标量值

    //复合类:多个值组成的类型,Rust有两个原生的复合类型,元组和数组

    //元组,可以含有多个不同的数据类型,元组长度一旦声明,不能增长或缩小
    let tup: (i32, f64, u8) = (500, 6.4, 1);
    //可以用模式匹配来获取元组的值
    let (x,y,z) = tup;
    println!("The value of y is: {}",y);
    //也可以用".索引值"来访问值
    let five_hundred = tup.0;

    let six_point_four = tup.1;

    let one = tup.2;
    //没有任何值的元组叫做单元类型,它的值叫做单元值.
    let tup_one = ();
    println!("{:?}",tup_one);

    //数组类型
    //数组长度固定且每个元素的类型必须相同
    let a = [1,2,3,4,5];
    let a:[i32;5] = [1,2,3,4,5];
    //初始化数组为多个相同的值
    let a=[3;5];
    //访问数组的元素
    let first = a[0];
    let second = a[1];

}