尝试在 DOORS DXL 中分配字符串向量时出现范围问题

Scoping problem when trying to assign vector of strings in DOORS DXL

我希望能够将一个选择器值发送到一个函数,并让该函数创建一个值的字符串数组以供后续操作使用。我 运行 遇到的问题是 DXL 规则不会 "see" 在 "if {} " 块内声明的变量,即使我已经保证在所有情况下我的字符串数组都会得到初始化。示例:

string  tryme( int thechoice){
    string outit
    if (thechoice == 1){
         outit = "you chose one"
        }
    else if (thechoice ==2){
         outit = "you chose two"
        }
        else { outit = "bad choice"}
//  do a bunch of stuff with  "outit" values 
    return outit
}

// that works, but this doesn't
string  trymore( int thechoice){
    if (thechoice == 1){
        string outit[] = {"you chose one","and one"}
        }
    else if (thechoice ==2){
        string outit[] = {"you chose two","and two", "and three"}
        }
        else { string outit = "bad choice"}
//  do a bunch of stuff with  "outit" values 
    return outit
}

我可以使用动态数组,这样我就可以在 "if{}" 之前声明数组,但是我不得不在每个案例中编写循环,使用 put 来加载数组.
我知道 DXL 的功能有限,但如果有人知道更好的方法,请告诉我。

附加约束

最后,我希望能够从循环中重复调用该函数,每次都更改 "thechoice"。这就是我不能在父脚本中声明字符串数组的原因,因为一旦声明 (string outit[] = {'a','b'}),DXL 就无法删除数组或调整其大小。

比那更容易,虽然有点违反直觉。我需要在不分配任何东西的情况下声明一个字符串向量,然后生成一个临时字符串向量,然后将我想要的变量设置为等于临时值。像这样:

string  trymore( int thechoice){
    string outit[]
    string whatdone
    if (thechoice == 1){
        string foo[] = {"you chose one","and one"}
        whatdone = "did one"
            outit = foo
        }
    else if (thechoice ==2){
        string foo[] = {"you chose two","and two", "and three"}
        whatdone = "did two"
            outit = foo
        }
        else {
        string foo[] = "bad choice"
        whatdone = "nogood"
            outit = foo
            }
print "outit " outit[0] "\n"
//  do a bunch of stuff with  "outit" values 
    return whatdone
}

DXL 不允许您将值分配给 outit ,哭泣 "length mismatch",但允许您将 outit 设置为完全定义的 foo