jpo*_*234 3 delphi generics callable
在 C++ 鸭子类型中,有可调用的概念,例如可以像函数一样调用的符号。我想用 Delphi 泛型来模拟这一点。
我遇到一个问题,我需要一个可以接受普通过程、类方法或 lambda 作为参数的过程。现在我有 3 个几乎相同的重载实现。有没有办法使用 Delphi 泛型来避免这种重复?
为此,您不需要泛型。
与、、 和reference to X兼容(其中是过程类型,例如)。XX of objectreference to XXprocedure(X: Integer)
例如,
program Project1;
{$APPTYPE CONSOLE}
uses
System.SysUtils;
type
TTestProc = procedure(X: Integer);
TTestMeth = procedure(X: Integer) of object;
TTestRef = reference to procedure(X: Integer);
// Ordinary procedure
procedure TestProc(X: Integer);
begin
end;
// Method
type
TMyClass = class
class procedure TestMeth(X: Integer);
end;
class procedure TMyClass.TestMeth(X: Integer);
begin
end;
begin
var A: TTestRef;
A := TestProc;
A := TMyClass.TestMeth;
A := procedure(X: Integer) begin end;
end.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
125 次 |
| 最近记录: |