我有一个my_list_1
(结构列表)以这种方式定义:
struct my_struct {
something[2] : list of int;
something_else[2] : list of uint;
};
...
my_list_1[10] : list of my_struct;
我需要将此列表复制到方法中的局部变量:
foo_method() is {
var my_list_2 : list of my_struct;
my_list_2 = deep_copy(my_list_1);
...
};
我得到的编译错误:
*** Error: 'my_list_1' is of type 'list of my_struct', while
expecting type 'any_struct'.
...
my_list_2 = deep_copy(my_list_1);
编写deep_copy()
的所有变体我尝试过导致编译错误...如何将结构列表复制到局部变量?谢谢你的帮助。
答案 0 :(得分:2)
您无法直接使用deep_copy(...)
复制列表。如果您查看文档,deep_copy(...)
将获取类型any_struct
的单个参数并返回单个结构实例。您必须在for each
循环中使用它:
extend sys {
my_list_1[10] : list of my_struct;
run() is also {
foo_method();
};
foo_method() is {
var my_list_2 : list of my_struct;
for each (elem) in my_list_1 {
my_list_2.add(deep_copy(elem));
};
print my_list_1[0], my_list_2[0];
print my_list_1[1], my_list_2[1];
};
};
答案 1 :(得分:2)
从Specman 14.2开始,deep_copy()将复制任何内容。我认为它还没有结束,但到了今年年底。