2017-06-24 146 views
3
================ 
| Person | 
|--------------| 
|- id : String | 
|--------------| 
================ 

Person類物業idString類型。我必須檢查id是一個包含11位數的數字。我想這樣的事情:檢查字符串是一個數字

context Person::id:String 
inv: self.id->forAll(l|l.oclIsTypeOf(Integer)) 
     and 
     self.id.size() = 11 

但我覺得這是不正確的。

編輯。

現在我確定這是不正確的, l.oclIsTypeOf(Integer)總是返回false,因爲是oclIsTypeOf只應呼籲OclAny,當idString類型。

EDIT 2(解決方案)

我解決了它是這樣的:由Vincent Aranega提供

context Person::id:String 
inv: not self.id.toInteger().oclIsInvalid() 
     and 
     self.id.size() = 11 

下面的解決方案應該也工作

回答

3

上沒有String這麼多的方法,但toInteger可以幫助你。如果字符串不能轉換爲Integer,它將返回或Invalid的值Integer。所以:

context Person::id:String 
inv: not self.id.toInteger().oclIsUndefined() 
     and self.id.size() = 11 

應該做的伎倆! (在Acceleo中成功測試)

相關問題