================
| Person |
|--------------|
|- id : String |
|--------------|
================
我的课程Person
的属性id
是String
类型。我必须检查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
类型时,id
只应在String
上调用。
编辑2.(解决方案)
我解决了这个问题:context Person::id:String
inv: not self.id.toInteger().oclIsInvalid()
and
self.id.size() = 11
以下Vincent Aranega
提供的解决方案也应该有效
答案 0 :(得分:3)
String
上没有那么多方法,但toInteger
可以帮助你。如果字符串无法转换为Integer
,则会返回String
或Invalid
的{{1}}值。所以:
Integer
应该做的伎俩! (在Acceleo中成功测试)