//------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];
}