加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 为什么编译器拒绝2D通用数组的声明?

发布时间:2020-12-15 09:32:33 所属栏目:大数据 来源:网络整理
导读:我想声明一个这样的类型: type TDynMatrixT = TArrayTArrayT; 编译器拒绝这个: [dcc32 Error] E2508 Type parameters not allowed on this type 我想知道这个问题是否与泛型的嵌套有关.但似乎不是: type TDynArrayT = TArrayT;//pointless type I know,bu
我想声明一个这样的类型:

type
  TDynMatrix<T> = TArray<TArray<T>>;

编译器拒绝这个:

[dcc32 Error] E2508 Type parameters not allowed on this type

我想知道这个问题是否与泛型的嵌套有关.但似乎不是:

type
  TDynArray<T> = TArray<T>;//pointless type I know,but for the sake of the Q

也导致相同的编译器错误.

编译器错误的documentation让我知道在我阅读它之前可能比我知道的还要少:

E2508 type parameters not allowed on this type (Delphi)

When using class references,you cannot use generic classes directly.
You need to use a wrapper class to be able to use generics.

06003

任何人都可以解释为什么我不能以这种方式声明泛型类型?

解决方法

您的代码无效,因为您无法将泛型类型重新声明为开放泛型类型.

我会将此声明为:

type
  TDynMatrix<T> = array of TArray<T>;

这样,您仍然可以使用您可能需要的兼容性:TArray< T>的一个维度的元素.

那么你就可以写了

var
  matrix: TDynMatrix<Integer>;
  values: TArray<Integer>;
....
SetLength(matrix,2,2);
values := matrix[0];
values := Copy(matrix[1]);

等等

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读