将类型声明为集合的子集

时间:2015-04-23 09:42:15

标签: delphi set

我可以很容易地声明一个枚举和一组 但有时我只想使用枚举的一部分,并且我希望编译器检查子枚举及其子集中的值是否保持在边界内。

type
  TDay = (mon, tue, wen, thu, fri, sat, sun);
  TWeekday = (mon..fri); //not allowed;

  TDays = set of TDay;
  TWeekdays = set of TDay[mon..fri]; //not allowed

我是否可以声明TWeekdayTWeekdays作为TDay的衍生产品,如果是,怎么做?

有趣的是,谷歌在这个问题上没有产生任何东西(对我而言),只是普通的老套装。

1 个答案:

答案 0 :(得分:10)

您的子范围语法错误了。删除括号(),它将起作用。

type
  TDay = (mon, tue, wen, thu, fri, sat, sun);
  TWeekday = mon..fri; // A subrange of TDay

  TDays = set of TDay;
  TWeekdays = set of TWeekDay; 

有关Subrange TypesSets的更多信息。