全局范围程序不能是通用的?这个限制有技术原因吗?

Ada*_*m G 7 delphi generics delphi-xe6

为什么不允许在全局过程中使用泛型类型。例如:

  procedure Foo<T>(bar : T);
Run Code Online (Sandbox Code Playgroud)

编译器错误:E2530 全局过程或函数不允许使用类型参数

但它作为类方法是可以接受的

TFoo = class(TObject)
public
  class procedure Foo<T>(bar : T);
end;
Run Code Online (Sandbox Code Playgroud)

这显然是我的解决方法,但我对限制是否存在实际的技术原因感兴趣。

Dav*_*nan 5

没有技术原因说明全局范围内的过程不能是通用的。

如果设计师想实现这一点,那么它可以做到。

  • 好吧,如果它让您感觉好些,那么您的反对票都不是我的。但我不知道为什么你会认为这个观点是基于的。要么是技术上的原因导致它无法完成,要么因为他们认为它不好/危险而没有完成,或者因为他们有其他优先事项而没有完成。您可以完全自由地对这个问题的答案不感兴趣,但我发现这是一个奇怪的遗漏,并想知道它是否表明了我误解的 Delphi 中泛型实现的某些内容。无论如何,谢谢你的回答。 (2认同)