当我尝试定义嵌套泛型记录时,遇到了一个奇怪的编译器错误。
嵌套在类和接口中是有效的,但是在记录中却不行。
type
TRec<T> = record
Value: T;
end;
TCls = class
public
Rec: TRec<TRec<Integer>>;
end;
这段代码在Delphi Berlin 10.1.2和Tokyo 10.2.3上都无法编译。是语言本身的限制还是编译器的问题呢?
错误信息如下:
[dcc32 Error] Project1.dpr(22): E2564 Undefined type 'TRec<T>'
我只是想嵌套使用Spring.Nullable<>
类型,但不起作用。之后我用一个简单的泛型记录快速重现了这个问题。