Generics 对象Pascal中的泛型:类型相等
我正在尝试学习Object Pascal(可能是为了业余项目),我发现Object Pascal(FreePascal)支持Generics 对象Pascal中的泛型:类型相等,generics,pascal,freepascal,Generics,Pascal,Freepascal,我正在尝试学习Object Pascal(可能是为了业余项目),我发现Object Pascal(FreePascal)支持{$mode objfpc}中的泛型。它们看起来像C#泛型,但似乎有区别。当我试图声明变量时: 使用Fgl; ... SomeVariable:TFPSList; 我有一个错误告诉我fgl单元中的意外“,TFPSList不是泛型类型,它是一个普通类,所以不能专门化它, 使用TFPGList,您的语法也是错误的,在{$mode objfpc}中,您需要使用specializ
{$mode objfpc}
中的泛型。它们看起来像C#泛型,但似乎有区别。当我试图声明变量时:
使用Fgl;
...
SomeVariable:TFPSList;
我有一个错误告诉我fgl单元中的意外“,TFPSList不是泛型类型,它是一个普通类,所以不能专门化它, 使用TFPGList,您的语法也是错误的,在{$mode objfpc}中,您需要使用specialize关键字作为泛型,正确的语法是:
program Project1;
{$mode objfpc}
uses Classes,sysutils,fgl;
type
SomeType=specialize TFPGList<String>;
var
SomeVariable:SomeType;
begin
SomeVariable:=SomeType.Create;
SomeVariable.Add('some string');
end.
程序项目1;
{$mode objfpc}
使用类、sysutils、fgl;
类型
SomeType=专门化TFPGList;
变量
SomeVariable:SomeType;
开始
SomeVariable:=SomeType.Create;
添加('some string');
结束。
free pascal在Delphi模式下也是通用的{$mode Delphi}具有不同的语法,更多信息请参见此处尝试使用
TFPGList
。正如所言,TFPSList
是一个基类,不打算直接使用(注意,我也没有使用,我只是在谷歌上搜索了“TFPGList”),有了这些文档,应该可以很快消除这些误解