openlang

声明包含常量字符串的数组

Delphi 能用类似下面示例的方式声明字符串数组吗?

{'alpha','beta','gamma'}
从英语翻译查看原文

后续讨论 4

顺着彼此的依据读下去
  1. 固定链接

    也可以使用动态数组,如下例所示:

    var
      CachedLabels: TArray<string>;
    
    function ReadLabels: TArray<string>;
    begin
      if Length(CachedLabels) = 0 then
        CachedLabels := TArray<string>.Create('Alpha', 'Beta', 'Gamma');
      Result := CachedLabels;
    end;

    虽然它是在运行时初始化堆上的动态数组,但这个示例展示了 Delphi 动态数组的“伪构造函数”,可以在使用的位置直接初始化。(注意,此示例并非线程安全)。

    要取得数组长度,只需调用标准 Length() 函数,要确定有效的下标范围,则调用标准 Low() 和 High() 函数。

    对于旧版 Delphi,请把 TArray 替换成自己定义的动态字符串数组类型,例如:

    type
      TLabelArray = array of string;
    从英语翻译查看原文
  2. 固定链接

    还有一种间接做法。编写这样的函数:

    procedure copyLabels(var destination: ArrayOfString; const source: Array Of String);
    var
      count, index: Integer;
    begin
      count := Length(source);
      SetLength(destination, count);
      for index := count-1 downto 0 do
        destination[index] := source[index];
    end;

    然后这样调用该函数:

    copyLabels(labels, ['LabelA', 'LabelB', 'LabelC']);

    其中:

    labels: ArrayOfString;
    从英语翻译查看原文

同一个问题的其他角度

  1. 在 Godot 3.3 的 GDScript 中怎样随机选择枚举项而不用逐项列出?

    这是我在 GDScript 中使用的枚举声明。 我想随机选择一个枚举变体,而不用列出所有可能的变体。这样以后增加变体时,就不必修改负责随机选择的代码。 我尝试过下面这种方法。 还有这一种。 两种都失败了。一个返回 Null,另一个报告 "Invali…

    回复 2最近活动 gdscript
  2. Nim 求余语法

    Nim 中怎样表示求余运算? cell % 7 == 0 会给出 undeclared identifier: '%' 这个错误 Google 搜索和查看 SO 都没找到答案。

    回复 2最近活动 nim
  3. 从 APL 函数返回结果

    怎样才能让函数在执行结束后返回一个值? 例如我有这样的代码。 ROUTINE N ? N ⍴ 12 //它会生成 N 个从 1 到 12 的随机值 (N 是函数的参数)。 我只是想知道怎样拿到函数的结果,然后比如把这个结果传给另一个函数。 谢谢大家的…

    回复 2最近活动 apl