隐藏枚举成员
隐藏枚举成员使类作者能够更改枚举成员名称,而不会在现有代码中引起不兼容。属性的枚举块可隐藏成员隐藏的
属性。中定义的成员隐藏的
属性查询枚举成员时,枚举块不可见枚举
函数。
当一个枚举类派生自另一个类时,例如数值类或逻辑类,则每个成员都可以有一个与其相关联的值。如果两个成员具有相同的赋值,则类定义中第一个定义的成员掩码第二个成员。两个名称都是有效的枚举成员,但定义的第一个名称是主成员。虽然屏蔽可以使用一个成员名代替另一个成员名,但它不会对类用户隐藏辅助名。
使用隐藏的
属性从用户视图中移除屏蔽成员名。例如,HighlightColor
类定义了表示语法高亮显示颜色的枚举成员。
classdefHighlightColor < int32枚举红(1)绿(2)蓝(3)结束结束
类的新版本使用了更具描述性的成员名,但类需要避免破坏使用原始成员名(红色、绿色和蓝色)的现有代码。使用隐藏的
属性使类可以隐藏原始成员。
classdefHighlightColor < int32枚举错误(1)评论(2)关键字(3)结束枚举(隐藏)红(1)绿(2)蓝(3)结束结束
使用原始成员名的代码继续工作。例如,对现在隐藏的成员的现有引用HighlightColor.blue
是否与同值非隐藏成员兼容HighlightColor.keyword
.
a = HighlightColor.blue
a = HighlightColor枚举关键字
a == HighlightColor。关键字
Ans =逻辑1
对于表示值的枚举成员,类中定义的第一个成员是该值的主成员。例如,在HighlightColor
类,关键字
主要成员和蓝色的
是辅助成员,都表示值3。通常,主成员不隐藏,而辅助成员隐藏。但是,如果类设计要求隐藏主成员,那么辅助成员也必须隐藏。
隐藏纯枚举
纯枚举成员没有底层值,因此无法将一个成员标识为另一个成员的替换。但是,您可以使用隐藏的
属性从用户视图中删除成员,同时避免与隐藏成员的现有用途不兼容。
例如,PCComponents
类定义在线表单中用于计算机订单的枚举。而FloppyDrive
组件过时时,枚举成员可以作为隐藏成员保留在类中。表单可以排除FloppyDrive
,但类作者可以保持该成员可用,以便引用的现有表单FloppyDrive
仍然有效。
classdefPCComponents枚举USBSlots CDPlayer结束枚举(隐藏)FloppyDrive结束结束
查找隐藏的枚举成员
使用类元数据查找有关隐藏枚举成员的信息。的元。EnumeratedValue
类提供关于枚举成员的信息。对象的元数据HighlightColor
前面示例中使用的类可以显示隐藏成员的名称。
mc = ?HighlightColor
mc = class with properties: Name: 'HighlightColor'描述:" DetailedDescription: "隐藏:0密封:0摘要:0枚举:1 ConstructOnLoad: 0 handlecomcompatible: 0 InferiorClasses: {[1×1 meta.class]} ContainingPackage: [0×0 meta.class]Aliases: [0×1 string] RestrictsSubclassing: 0 PropertyList: [0×1 meta. package][140×1 meta. properties] MethodList: [140×1 meta. properties]EventList: [0×1 meta.]EnumerationMemberList: [6×1 meta. event]EnumeratedValue] SuperclassList: [1×1 meta.class]
每个枚举成员由a描述元。EnumeratedValue
对象中包含的EnumerationMemberList
财产。例如,元素中的第四个元素EnumerationMemberList
数组包含元。EnumerationValue
对象获取具有名称的成员红色的
.
mc.EnumerationMemberList (4)
ans = EnumeratedValue与属性:名称:'红色'描述:"详细描述:"隐藏:1
要列出所有隐藏成员的名称,请使用句柄类findobj
方法:
findobj (mc。EnumerationMemberList,“隐藏”,真正的)。名字
Ans = '红' Ans = '绿' Ans = '蓝'