枚举 (enum)

枚举允许你定义一组命名的常量值。

定义枚举

const Color = enum {
    red,
    green,
    blue,
};

使用枚举

const c = Color.red;

如果类型已知,可以省略枚举类型名称:

var c: Color = .blue;

显式整数值

可以为枚举成员指定显式整数值。

const Status = enum(u8) {
    ok = 0,
    bad_request = 1,
    not_found = 2,
};

方法

与结构体一样,枚举也可以包含方法。

const Suit = enum {
    clubs,
    spades,
    diamonds,
    hearts,

    pub fn isRed(self: Suit) bool {
        return switch (self) {
            .clubs, .spades => false,
            .diamonds, .hearts => true,
        };
    }
};

is_exhaustive

默认情况下,enum 不是穷尽的(non-exhaustive),这意味着你可以添加新的字段而不破坏现有的 switch 语句(如果它们使用了 else)。但是,如果你想确保处理了所有情况,可以将其标记为穷尽的。

另请参阅: