创建具有不同范围的数组副本

Create Copy of Array with different scope

是否有一种简单的方法可以通过保留所有原始值而只是将数组的范围从共享更改为全局来创建数组的副本?

shared stringvar Array SHARED_ARRAY

global stringvar Array GLOBAL_ARRAY

复制数组及其所有索引值实际上与将值从一个变量复制到另一个变量没有什么不同。不过,在使用数组方面有一些细微差别需要考虑。

要复制数组,您可以在公式字段中使用以下代码。

Shared StringVar Array SHARED_ARRAY;
Global StringVar Array GLOBAL_ARRAY := SHARED_ARRAY;

解析此公式后,SHARED_ARRAY 中的任何值都将复制到 GLOBAL_ARRAY。然而,这就是细微差别发挥作用的地方。第一个问题是公式不能 return 非标量值。由于数组包含多个值,因此它不是标量。因此,上面的公式会导致错误,因为最后一行代码 return 是整个 GLOBAL_ARRAY。为避免此错误,您可以将公式修改为以下内容。

Shared StringVar Array SHARED_ARRAY;
Global StringVar Array GLOBAL_ARRAY := SHARED_ARRAY;
GLOBAL_ARRAY[1];

公式现在 return 只是数组的第一个索引,现在是标量,不会引发错误。您可能想要取消公式字段,因为它将打印数组的第一个索引值。

我想提醒您的第二个细微差别是关于 SHARED_ARRAY 变量如何填充值的。在解析上面的公式之前,您需要确定它已经完全填充了您希望它包含的所有值。这将需要您熟悉报告的打印顺序部分,以便您可以确定将上述公式字段放在填充 SHARED_ARRAY.

部分之后的部分中