是否有一种方法可以在编译时(或运行时保持恒定时间)创建一个包含序数类型T
成员的集合,其中包含每个名为的值T
?
换句话说,我怎么能补充特定类型的空集?
type
TEnum =
(
eA = 1,
eB = 5,
eC = 34
);
TSet = set of TEnum;
const
CSet: TSet = ~[]; // with ~ being my fictional set complement operator
然后CSet
应该只包含名为的值eA
,eB
和eC
。
当然这不是一个实际的问题,我只是好奇
修改
当使用显式的非连续值声明时,我没有意识到枚举类型的行为。枚举仍包含未命名的成员以填补空白。更新的问题仅适用于指定成员
答案 0 :(得分:10)
对于没有指定值的枚举(如
),这很容易Mail::send('emails.m_reservation', $data, function ($message) use ($data) {
$message->subject($data['name']);
$message->to('gmail_username@gmail.com');
$message->from($data['email'], $data['name']);
});
但是,将type
TEnum =
(
eA,
eB,
eC
);
TSet = set of TEnum;
const
CSet: TSet = [eA..eC];
CSet: TSet = [low(TEnum)..high(TEnum)];
定义为
TEnum
上面的将无法按照您的预期运作。在您的情况下,type
TEnum =
(
eA = 1,
eB = 5,
eC = 34
);
将包含低枚举值和高枚举值之间的所有数值(1到34)。
仅获取明确命名的CSet
值的唯一方法是使用TEnum