.. _bitfields: ======== 位域 ======== 位域是一种无名类型,它在单个整数中表示最多 32 位标志的集合:: var t : bitfield < one,two,three > 有一个简写类型别名语法来定义位域:: bitfield bits123 { one two three } typedef bits123 = bitfield // 与上述声明完全相同 任意两个位域都是相同的类型,表示 32 位整数:: var a : bitfield var b : bitfield b = a 单个标志可以像常规 bool 字段一样读取:: var t : bitfield < one; two; three > assert(!t.one) 如果 alias 可用,则可以通过 alias 表示法构造 bitfield:: assert(t==bits123 three) Bitfields 可以通过整数值构造。提供有限的二进制逻辑运算符:: var t : bitfield < one; two; three > = bitfield(1<<1) | bitfield(1<<2) assert(!t.one && t.two && t.three) assert("{t}"=="(two|three)") t ^= bitfield(1<<1)