以下子范围枚举声明是有效的:
type
TReceiptCode = 'A'..'F';
这不会:
type
TReceiptCode = ' ','A'..'F', 'R';
也不会
type
TReceiptCode = ' ','A','B','C','D','E','F','R';
如何声明一个非连续值的子范围类型?
以下子范围枚举声明是有效的:
type
TReceiptCode = 'A'..'F';
这不会:
type
TReceiptCode = ' ','A'..'F', 'R';
type
TReceiptCode = ' ','A','B','C','D','E','F','R';
TSomeCharSet= Set of Char;
SomeChars: TSomeCharSet = [' ','A','B','C','D','E','F','R'];
可能是奶奶和蛋的情况,但我不确定你用它来做什么 :) ...
那么你所剩下的就是使用一个集合或数组来创建TNonContigousCharRange作为限制的“范围”,并在超出范围时引发异常,或者编写一个SetReceiptCode程序来执行类似的操作。
很遗憾,我认为没有办法做到这一点。您可以声明一个(新的)非连续枚举或现有类型的子范围,但不能同时声明两者。