如何在 Free Pascal 中使用匿名方法?

问题描述 投票:0回答:2

我尝试使用 Delphi 的匿名方法语法:

type
    fun = reference to function(): Integer;

Fpc 显示语法错误:

Error: Identifier not found "reference"

Free Pascal 相当于 Delphi 的匿名方法(如果有的话)是什么?

delphi lambda closures anonymous-methods freepascal
2个回答
6
投票

FreePascal 中未实现匿名方法。此类功能的列表位于此处


0
投票

支持匿名方法。有用的参考:

GitLab 问题: https://gitlab.com/freepascal.org/fpc/source/-/issues/24481

论坛公告: https://forum.lazarus.freepascal.org/index.php?topic=59468.0

最后,Sven 在公告中给出的一些例子:

type
  TFunc = function: LongInt;
 
var
  p: TProcedure;
  f: TFunc;
  n: TNotifyEvent;
begin
  procedure(const aArg: String)
  begin
    Writeln(aArg);
  end('Hello World');
 
  p := procedure
       begin
             Writeln('Foobar');
           end;
  p();
 
  n := procedure(aSender: TObject);
       begin
             Writeln(HexStr(Pointer(aSender));
           end;
  n(Nil);
 
  f := function MyRes : LongInt;
       begin
             MyRes := 42;
           end;
  Writeln(f());
end.
© www.soinside.com 2019 - 2024. All rights reserved.