3

我已经声明了几个常量数组,我想声明更多由它们组成的常量,但我不知道是否有合理的方法来做到这一点。

const
  Common_Strings : array [0..1] of string = ('foo','bar');
  Extra_Strings : array [0..1] of string = ('some','extra');

我想做的是其中之一:

  Combined_Strings = Common_Strings + Extra_Strings;
  Combined_Strings = (Common_Strings, Extra_Strings);

这看起来好像应该可以工作,但是写起来很难看,维护起来更难看,因为我的实际常量有 10 多个元素:

  Combined_Strings = (Common_Strings[0], Common_Strings[1], Extra_Strings[0], Extra_Strings[1]);

但是出于愚蠢,常量数组的元素不一定是常量:“[DCC Error] MyFile.pas(89): E2026 Constant expression expected”。显然,如果我尝试分配给他们,我会得到“[DCC Error] MyFile.pas(854): E2064 Left side cannot be assigned to”。

我注意到也不可能写:

Duplicate_Constant = Common_Strings;

(“预期的常量表达式”。真的。)

有没有办法将常量数组组合成更多的常量数组?

4

1 回答 1

4

类型化的常量只能用常量表达式来声明。您正试图根据类型化常量声明一个类型化常量。由于类型化常量不是常量表达式,因此您看到的编译器消息是设计使然。

结论是两个类型化常量数组的连接只能在运行时执行。因此,连接的结果只能存储到变量而不是常量。

数组常量的文档说明了这一点(强调我的):

要声明数组常量,请将数组元素的值括在声明末尾的括号中,用逗号分隔。这些值必须由常量表达式表示

于 2013-07-04T06:55:08.960 回答