1

我在 TTCN-3 中有一个数组,我想在上面使用命令排列。这通常是这样完成的:

myArray := { permutation( myArray[0], myArray[1], myArray[2] ) };

结果是,当我期望结果是 myArray 时,元素的顺序无关紧要。

但是,这需要对数组中的实际值进行硬编码,就像上面一样,我专门告诉排列我想要呈现的数组的哪些值。我现在处于一种情况,我有一个数组,我从代码中不知道它的大小。我可以找到我的数组的大小

sizeof(myArray);

因此,如果我可以使用在运行时获得的值来指定应该如何完成排列,那就太好了。我想要完成的是这样的

myArray := { permutation( myArray[0], ... , myArray[n] ) };

其中 n 是数组的大小,我从代码中不知道。

4

1 回答 1

2

在您的特殊情况下,“一组”可能是所需的构造。一组值以任何顺序匹配相同值的列表。

尽管如此,在 ( CR6088 )处有一个针对 TTCN-3 语言的已处理更改请求,扩展了 BNF 以支持动态列表作为超集、子集、排列和补码的参数。

CR 被接受并将在新的 TTCN-3 版本 4.5.1 中发布(详情请参阅第 B.1.3.3 节)。4.5.1 TTCN-3 核心语言标准应在http://www.ttcn-3.org/上提供。

请在下面找到显示 4.5.1 版定义的用法的示例(来自标准文档):

type record of integer RoI;
template RoI t_RoI1 := {1, 2, *};
template RoI t_RoI2 := {permutation(0, all from t_RoI1), 4, 5}; 
// results in {permutation(0, 1, 2, *), 4, 5}

最好的问候,
波格丹

于 2013-05-28T09:41:28.080 回答