Skip to content

可选字段与联合类型 ​

可选字段 ​

模板字段后的 ? 表示初始化数据可以省略这个字段。

mcfpp
data Reward {
    var amount: int = 10
    var note: string?
}

func main() {
    var reward = Reward()
    print(reward.amount)
}

上例保留 amount,省略 note。读取字段前,应先建立它已经初始化的条件。外部 NBT 路径可以用 NBTRef<T>.tryRead 处理存在性。

联合类型 ​

(int | string) 表示字段可以保存所列类型之一:

mcfpp
data DisplayValue {
    var value: (int | string) = 0
}

func main() {
    var numeric = DisplayValue()
    numeric.value = 10
    var named = DisplayValue()
    named.value = "Ready"
    print(numeric.value as int)
    print(named.value as string)
}

编译器追踪已知字段的实际类型。as 选择当前使用的类型视图。使用它时,当前值应与指定类型相符。涉及外部数据时,应先确认数据布局。

需要给已有类型另一个名字时,使用 typealias int as Score。类型别名与联合类型分别解决命名和多种值类型的问题。