enum¶
在 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