枚举
定义枚举
枚举默认是模块内访问,通过pub关键字来定义公共枚举。
枚举的命名跟结构体命名一样,必须以大写字母开头,枚举项的名称跟函数命名一样,必须是小写加下划线。
enum Color {
blue // 如果没有指定初始值,默认从0开始,然后往下递增1
green
white
black
}
fn main() {
mut c := Color.green // 第一次定义要使用:枚举名称.枚举值
println(c) // 输出green
c = Color.blue
c = .blue // 第二次修改赋值,也可以忽略枚举名称,直接使用.枚举值就可以了
println(c) // 输出blue
}
也可以指定枚举值的值,枚举值也可以是负数:
也可以指定枚举的值为16进制:
枚举值类型
枚举值默认是int类型,也可以使用as来明确指定枚举值的类型,枚举值的类型只能是内置的整数类型。
枚举方法
枚举也可以像结构体那样添加方法:
枚举值/整型相互转换
枚举类型和整数类型可以相互转换,不过有一点需要特别注意,将整数转换为枚举类型,属于跨类型的强制转换,必须在不安全代码块中执行,不然编译器会报错。
枚举类型数组
可以定义枚举类型的数组,数组的值是某个枚举项:
遍历枚举值
可以使用$for in语句来遍历所有的枚举值:
枚举注解
@[flag]注解
如果给枚举加了@[flag]注解,就表示这个枚举是位字段类型的枚举,枚举项的值不能自定义设置,由编译器自动设置,按顺序是2的n次方,n从0开始:1,2,4,8,16 ...。
如果枚举是位字段类型的枚举,可以使用以下内置方法:
自定义注解
可以像结构体和函数那样,给枚举和枚举值添加自定义注解,然后自己解析使用。
关于注解的进一步使用,可以参考注解章节。
枚举注解:
枚举值注解:
最后更新于
这有帮助吗?