首先:感谢支持!
我的问题:我想简单地测试是否定义了“枚举”属性。
假设我有:
- 具有 2 个值 VALEUR1 和 VALEUR 的 EnumValues 枚举
- 具有可选属性值的 EObject 对象
由于这个表达式,我本来希望测试值的存在:
object.value.oclIsUndefined()
但是这个表达式总是返回 true,因为 value 属性似乎是用枚举的第一个值初始化的。我发现的唯一绕过方法是不将 EnumValues 声明为 Enum,而是声明为 EObject。然后 oclIsUndefined() 方法在模型中没有设置属性时返回 false。顺便说一句,我的模型是由 Xtext 生成的。
这似乎是一个愚蠢的问题,但我无法在 Google、OCL 规范或 Acceleo 资源中找到答案。
我在这里找到的唯一材料说,实现这一目标的唯一方法是使用 isUndefined 或更通用的 isUndefined('value') OCL 辅助方法。但我无法在 Acceleo 环境中拒绝这一点。
你有什么主意吗 ?
提前感谢您的回复!
斯蒂芬妮