【rust】part-5 枚举

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类型,主要添加"其他"的处理语句
    }

2.待补充

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

过得精彩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值