试图理解DOORS DXL解释器:就地数据

时间:2015-08-05 08:50:15

标签: ibm-doors

我有一个问题,理解解释器为什么不接受这个:

<properties>
    <jstl.version>1.2</jstl.version>
</properties>


<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>${jstl.version}</version>
</dependency>   

错误是:&#34;函数(对象)的错误参数&#34; / &#34;错误连接的令牌&#34; 。我验证了Object co = current Object Object o = object(co."Absolute Number") 返回的类型与根据DXL手册声明的co."Absolute Number"的期望相符:

Object object(int absno[, Module m])

打印&#34;整数&#34; 。似乎很好,但很明显,事实并非如此。

这不是该特定属性的问题。 print type(co."Absolute Number") 应该返回一个字符串,但是使用该属性时,解释器也不会识别数据类型。

在不同的地方添加括号无济于事。尝试将返回的属性值显式转换为整数并没有帮助。将返回值存储到整数变量有什么帮助:

co."Object Text"

我不喜欢,因为它引入了未使用的变量。也可以使用标准字符串方法:将属性值转换为字符串,然后(返回)转换为整数:

Object co = current Object
int no    = co."Absolute Number"
Object o  = object(no)

但这对我来说相当黑客。我忽略了什么?

2 个答案:

答案 0 :(得分:1)

你是对的,DXL编译器对这样的事情有点奇怪。最好的方法是你提到的那个:

Object co = current
Object o  = object(intOf(co."Absolute Number" ""))

避免创建无关的变量。另外,旁注:您注意到我在Object之后遗漏了current,因为这是不必要的。

这也引出了一个问题,但是......为什么你需要创建coo,因为一旦执行它们,它们都是同一个对象的句柄。你可以这样做:

Object o = current

希望这有帮助。

答案 1 :(得分:0)

错误消息出现在编译时,当co。&#34;绝对数字&#34;没有类型,即编译器不查找预定义的属性或其类型。类型函数正确解析为运行时绝对编号的类型。 create函数继承左侧handide类型,在DXL中是Special。