error union (!void !bool …)
对应着 if 处理逻辑,if 处理返回值,else处理error

optional (?bool …)
对应if 处理逻辑,if 处理返回值,else处理不存在

error-union + optional (!?bool …)
从左到右依次if处理,最外层的else处理 error,内层的else处理optional

使用 if 作为表达式使用
对于 optional (?bool),使用orelse
对于 error-union (!bool),使用catch

enum
@tagName(enum value)
@enumFromInt(Enum type, value)

Union

实际上使用的是 tagged union,也就是 union(enum),此时才能使用switch
需要注意的是 union定义要与使用的enum名称一致
更改值时则需要将值转化为指针进行更改