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让我知道在我阅读它之前可能比我知道的还要少:
任何人都可以解释为什么我不能以这种方式声明泛型类型? 解决方法
您的代码无效,因为您无法将泛型类型重新声明为开放泛型类型.
我会将此声明为: 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]); 等等 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |