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

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 的衍生物吗?如果可以,如何声明?

有趣的是,谷歌在这个问题上没有产生任何东西(对我来说),只是简单的旧集。

最佳答案

您的子范围语法错误。去掉括号 () 它将起作用。

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

10-06 09:34