我有一种情况,我使用“私有”范围标识符定义了几个模块级实例变量。我需要这样做,因为这些变量将在模块内的多个函数中使用。此外,其中一些变量是“列表”或“集合”。我意识到这些变量的值在对模块中某个函数的重复调用之间持续存在。这正如预期的那样。
我还在创建一个测试,我在其中重复调用其中一个函数。我希望拥有实例变量的新副本(就像 Java 中的实例成员一样)。我似乎不能这样做。如果我尝试使列表/集合的内容无效,我会遇到如下麻烦:
module foo::bar
private set[DataType_1] data1;
public void nullifyInstanceVars( )
{
//tried
data1={}
}
//method that gets called repeatedly:
public void repeatCallMe(..)
{
nullifyInstanceVars( );
...
..
//Throws an error like: trying to add an element of type 1 to set[void]
data1 += anElementOfType1
}
因此,我修改了 nullifyInstanceVars() 方法以设置 [DataType1] data1={ }。它不起作用,因为我相信这只是创建了一个仅在函数范围内的新变量,并且实际上并没有清除元素!
任何帮助表示赞赏...