存在的EReference我有兩個的eclass(打電話給他們的X和Y)在我的元模型和遏制(X含有Y)它們之間的關係,其下限爲0,上限爲1。檢查的實例(Acceleo)
我需要在我.mtl文件,以瞭解用戶是否以添加一些代碼加入的Y這隻實例。 嘗試次數這樣的失敗:
[if (X.relationname.oclIsUndefined() = false)]
[if (X.relationname <> null)]
在此先感謝,讓我知道如果你需要任何額外的信息。
存在的EReference我有兩個的eclass(打電話給他們的X和Y)在我的元模型和遏制(X含有Y)它們之間的關係,其下限爲0,上限爲1。檢查的實例(Acceleo)
我需要在我.mtl文件,以瞭解用戶是否以添加一些代碼加入的Y這隻實例。 嘗試次數這樣的失敗:
[if (X.relationname.oclIsUndefined() = false)]
[if (X.relationname <> null)]
在此先感謝,讓我知道如果你需要任何額外的信息。
SOLUTION:
我終於被解決:
[if((X.relationname.attributename->size()).oclIsUndefined() <> true)]
這是不是最好的解決方案,但它的伎倆。該屬性是一個EString。
這將取決於你的包含關係;無論是多值(它的「上界」設置爲「-1」,即只要你想它可以容納多達Y)或monovalued(它的「上界」爲「1」或不變,就只能有一個Y)。
如果多值,參考永遠不會是「空」(或「oclIsUndefined」)。當它不持單Y,這將是一個空列表,因此你需要檢查的大小:
[if (not X.relationname.isEmpty())]
否則,monovalued引用,您可以檢查null
(你在做什麼你答案似乎表明,它是這樣的,你在這裏):
[if (not X.relationname.oclIsUndefined())]
相反,你已經在你的答案做的是有點不同:
[if((X.relationname.attributename->size()).oclIsUndefined() <> true)]
釷是否會實際檢索與您的X關聯的Y並訪問其屬性值。如果沒有「Y」,這將不是null
:它將是「無效的」,即它將失敗。當然,「oclInvalid」(以下簡稱「失敗」對象)是從「真」,讓你的「<>」作品不同......即使是笨重的(你通常用「不」的操作,而不是測試反對布爾值)。