【发布时间】:2020-04-21 12:09:55
【问题描述】:
Delphi 可以有枚举类型,e.g.:
type
TDay = (Mon, Tue, Wed, Thu, Fri, Sat, Sun); // Enumeration values
是否可以联合枚举类型:
type
TWeekDay = (Mon, Tue, Wed, Thu, Fri);
TWeekendDay = (Sat, Sun);
TDay = (TWeekday, TWeekendDay); //hypothetical syntax
实际上,我需要在不破坏源代码兼容性的情况下将一个大列表分解到它们实际上是不相交的项目中:
type
TWeekDay = (Mon, Tue, Wed, Thu, Fri);
TWeekendDay = (Sat, Sun);
TDay = (Mon, Tue, Wed, Thu, Fri, Sat, Sun); //identifier redeclared syntax error
然后改变一些变量:
-
Day: TWeekday;TDay; -
Day: TWeekendDay;TDay
在道德上相当于strict typing.????
【问题讨论】:
-
我能想到的最好的方法是使用枚举子范围。
TDay = (Mon, Tue, Wed, Thu, Fri, Sat, Sun); TWeekDay = Mon..Fri; TWeekendDay = Sat..Sun; -
@LURD,好主意。而且很可能是这样做的唯一方法。
-
@LURD:我考虑过(并且实际上写了评论),但后来意识到它很可能不起作用。大多数星期从星期日开始并以星期六结束,因此该类型应按该顺序运行,这会破坏
TWeekendDay,因为您不能将Sunday..Saturday用作子范围。 -
@KenWhite 本周的开始取决于您来自哪里或世界/国家的哪个部分这需要有意义。据我所知,大多数欧洲国家都将星期一视为一周的第一天
-
@Ancaron:当然可以。我从来没有说过不会。我指出,由于一周开始和结束的问题,它可能不适用于所有情况。
标签: delphi enums delphi-xe6