文章目录
0.env
ubuntu1804
1.enum定义及match使用
1.标准定义
# def:
enum Stu{
Stu1,Stu2
}
# use:
let s1 = Stu::Stu1;
println!("{:#?}",s1);
2.添加元祖属性
添加属性后无法使用{:?}来debug
# def:
enum Book{
Pbook(i32),
Ebook(String), //定义不同的属性
}
# use:
let b1 = Book::Pbook(100);
let b2 = Book::Ebook(String::from("Ebook_b2"));
//println!("{:#?}",b1); //error Tuple cannot use {:?}
3.添加结构体属性
添加结构体属性,使用结构体语句{},
# demo:
enum People{ //使用结构体语句{}
Man{
name:String,
age:u32,
},
Female{age:u32},
}
# init: //同结构体定义
let p1 = People::Man{
name:String::from("Man_name"),
age:28
};
let p2 = People::Female{age:18};
4.match语句(功能同switch)
与switch语句功能类似,没有丢失break导致逻辑错误的问题
1.match+enum
# tip:使用如上结构体定义及初始化语句做为demo
match p1{
People::Man{name,age}=>{ // 列出全部字段,后续补充
println!("Man name : {}",name); //输出结构体字段
println!("Man age : {}",age);
},
People::Female{age}=>{
println!("Female age : {}",age);
}
}
# "结构体+元祖属性,match需要为元祖属性指定一个临时变量名"
# def://元祖
enum Book{
Pbook(i32),
Ebook(String), //定义不同的属性
}
# use:
match b1 {
Book::Pbook(i)=>{ //指定元素名为i
println!("{}",i);
},
Book::Ebook(i)=>{
println!("{}",i);
}
}
2.match + 合法数据格式
合法格式:枚举、整数、浮点数、字符、字符串切片引用(&str)类型
Tip:处理非enum类型时,主要添加"其他"选项的处理语句,例如:_ => {},
# demo:
let str1 = "string_1";
match str1 {
"string_1" => {
println!("match string_1"); // {} 限定语句块
},
"string_2" => println!("match string_2"), // 以,结束每一个分支
_ => {}, //处理非enum类型,主要添加"其他"的处理语句
}