Skip to content

枚举 ​

当前 CLI 已支持枚举声明分析,枚举变量赋值的产物生成仍待完善。下面先说明声明语法,文末提供可运行的命名常量写法。

枚举为一组固定选项命名,适合表示房间状态、关卡阶段和奖励种类。

text
enum RoundState {
    Waiting,
    Running,
    Finished
}

func main() {
    var state: RoundState = Waiting
    print(state.identifier)
    state = Running
    print(state.identifier)
}

变量的类型为 RoundState 时,使用成员名称赋值。枚举值保留成员身份,可在程序中传递和保存。

指定成员的值 ​

text
enum RewardKind {
    Small = 1,
    Large = 5,
    Special
}

func main() {
    var reward: RewardKind = Large
    print(reward.value)
}

= 可以为成员指定值。使用有意义的成员名,可以让调用代码直接表达选项的用途。

当前工程中的可运行写法 ​

当前 CLI 能分析上面的枚举声明,但枚举变量赋值在数据包生成阶段仍会触发 Unbound author-environment value。下面使用命名常量表达同一组状态:

mcfpp
const WAITING: int = 0
const RUNNING: int = 1
const FINISHED: int = 2

func main() {
    var state = WAITING
    state = RUNNING
    if (state == RUNNING) {
        print("Round started")
    }
}

这个版本可用于当前数据包工程。完整枚举值的运行时生成仍需编译器继续完善。