枚举¶
在 lib
中声明的 enum
声明会声明一个 C 枚举
lib X
# In C:
#
# enum SomeEnum {
# Zero,
# One,
# Two,
# Three,
# };
enum SomeEnum
Zero
One
Two
Three
end
end
与 C 中一样,枚举的第一个成员的值为零,后续每个值都会递增一。
要使用一个值
X::SomeEnum::One # => One
您可以指定成员的值
lib X
enum SomeEnum
Ten = 10
Twenty = 10 * 2
ThirtyTwo = 1 << 5
end
end
如您所见,成员值允许一些基本的数学运算:+
、-
、*
、/
、&
、|
、<<
、>>
和 %
。
枚举成员的类型默认情况下为 Int32
,即使您在常量值中指定了不同的类型
lib X
enum SomeEnum
A = 1_u32
end
end
X::SomeEnum # => 1_i32
但是,您可以更改此默认类型
lib X
enum SomeEnum : Int8
Zero
Two = 2
end
end
X::SomeEnum::Zero # => 0_i8
X::SomeEnum::Two # => 2_i8
您可以在 fun
参数或 struct
或 union
成员中使用枚举作为类型
lib X
enum SomeEnum
One
Two
end
fun some_fun(value : SomeEnum)
end