Прежде всего: спасибо за поддержку!Неопределенный тест для перечисления с Acceleo
Моя проблема: Я хочу просто проверить, определен ли атрибут «перечислены» или нет.
Скажем, у меня есть:
- EnumValues перечисление с 2 значениями VALEUR1 и Valeur
- объект EObject с дополнительным значением атрибута
я ожидал бы, чтобы проверить наличие значения благодаря этому выражению:
object.value.oclIsUndefined()
Но thi выражение s всегда возвращает true, поскольку атрибут value, кажется, инициализируется первым значением перечисления. Единственный способ обхода, который я нашел, - не объявлять EnumValues как Enum, а как EObject. Затем метод oclIsUndefined() возвращает false, если атрибут не задан в модели. BTW моя модель создается благодаря Xtext.
Это, кажется, глупый вопрос, но я не могу найти ответ на Google, в спецификации OCL или в ресурсах Acceleo.
Единственный найденный материал here говорит, что единственный способ достичь этого - использовать метод isUndefinined или более общий метод isUndefined ('value') OCL helper. Но я не могу отказаться от этого в окружающей среде Акчелео.
У вас есть идея?
Заранее благодарим за ваш ответ!
Stéphane
Hi Stéphane! Какой хоннор! Лидер Acceleo! Спасибо за ваш ответ и ссылку. Эффективно я использую обозначение, которое вы упомянули, чтобы проверить значение перечисления. Один обходной путь, обозначенный документацией Xtext, представляет собой выделенное значение none в первой позиции перечисления ... Что я не нашел очень элегантным, но хочу, чтобы Xtext создавал мою модель ecore. Так что я собираюсь использовать этот совет ... Еще раз спасибо! Stéphane –