有没有一种方法可以在一行上初始化 Pascal 中的 2D 数组中的所有项目(不循环)?

问题描述 投票:0回答:1

我知道不要对 Integer, arr 的一维数组执行以下操作,

SetLength(arr, 4);
arr[0] := 11;
arr[1] := 12;
arr[2] := 13;
arr[3] := 13;`

我也可以只用一行完成上述操作:

arr := [11, 12, 13, 14];

现在是整数数组的二维数组示例(维度为 2, 2),

arr[0][0] := 11;
arr[0][1] := 12;
arr[1][0] := 13;
arr[1][1] := 14;

问题: 我也可以在一行类似下面这样做吗?

arr := [[11, 12], [13, 14]];

注释

  • 我对定制函数“让生活更轻松”不感兴趣。我严格询问默认的 Pascal 语法。
  • 我已经知道如何通过循环在 Pascal 中使用(初始化)二维数组。如果这是唯一的方法,我不想浪费你的时间。就说是这样吧。

因为这是必填字段,所以我再次尝试

arr := [[11, 12], [13, 14]];
但它没有编译。 (出现类型不匹配错误。)

arrays pascal
1个回答
0
投票

ISO 标准 10206“扩展 Pascal”定义了初始值说明符的构造。

var
    f: array[0..3] of integer value [0: 11; 1: 12; 2, 3: 13];

您还可以将

array
文字分配给变量。 结构化值构造函数必须以数据类型为前缀:

type
    t = array[0..1, 0..1] of integer;
var
    f: t;
begin
    f := t[0: [0: 1; 1: 2]; 1: [0: 3; 1: 4]];

该语法还为所有未明确定义的成员提供了一个

otherwise
子句。

var
    f: array[0..9] of real value [5: 12.34; otherwise 56.78];
© www.soinside.com 2019 - 2024. All rights reserved.