Rational DOORS DXL:我可以检查是否存在本地字符串变量吗?

时间:2017-02-13 15:02:25

标签: ibm-doors

假设我有一个带有各种if / else部分的DXL宏,这样特定的字符串只能在某些条件下创建,而不是在其他时间创建。在尝试使用所述字符串之前,如何测试存在?我正在寻找相当于

的东西
if (exist string foo) {
     do_something
    } else {
     do_some_other_thing
}

我可以通过初始化string foo = "notset"并测试以查看值是否已更改来克服变通方法,但是如果不需要则更喜欢不需要创建字符串变量的东西。

请注意,这是一个本地字符串,而不是属性中找到(或找不到)的内容。

2 个答案:

答案 0 :(得分:0)

你试过if (null string_variable) {吗?如果声明了字符串但没有给出值,则会评估为true,因此它可能不是您想要的。如果字符串还没有被声明,它也可能会给你一个执行错误。

答案 1 :(得分:0)

请注意,DXL具有范围。像这样的代码不起作用:

if (cond) {
   string s = "Hello";
} else {
   // something different
}
if (s == ...) print "..." // parse time error, s not defined 

您需要使用以下内容:

string s = null; 
if (cond1) {
    s = "Hallo"; 
} else {
    // something different
}
if (!null s) print "..."; 

我希望你不是在讨论检查DXL代码中是否声明了变量。这是不可能的,因为在执行任何DXL之前,未声明的变量将产生解析时间错误(自动关闭自动解码)。你永远不应该依赖autodeclare。