3

我有一个以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()我尝试过编写的所有变体都导致编译错误...如何将结构列表复制到局部变量?谢谢您的帮助。

4

2 回答 2

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];
};
};
于 2014-11-19T10:37:13.523 回答
2

从 Specman 14.2 开始, deep_copy() 将复制任何内容。我认为它还没有出来,但要到今年年底。

于 2014-11-20T09:13:16.313 回答