我想要一些在delphi中编写函数的方法,如下所示
procedure Foo<T>;
begin
if T = String then
begin
//Do something
end;
if T = Double then
begin
//Do something else
end;
end;
即:我希望能够基于通用类型做不同的事情
我尝试在
TypeInfo
中使用System
,但这似乎适合于对象而不是通用类型。我什至不知道这可能在帕斯卡
最佳答案
TypeInfo
应该可以工作:
type
TTest = class
class procedure Foo<T>;
end;
class procedure TTest.Foo<T>;
begin
if TypeInfo(T) = TypeInfo(string) then
Writeln('string')
else if TypeInfo(T) = TypeInfo(Double) then
Writeln('Double')
else
Writeln(PTypeInfo(TypeInfo(T))^.Name);
end;
procedure Main;
begin
TTest.Foo<string>;
TTest.Foo<Double>;
TTest.Foo<Single>;
end;
关于delphi - 在delphi中测试泛型的类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31042997/