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

发布于 2024-12-10 10:28:06 字数 244 浏览 0 评论 0原文

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

type
    fun = reference to function(): Integer;

Fpc 显示语法错误:

Error: Identifier not found "reference"

What's the Free Pascal相当于 Delphi 的匿名方法(如果有)?

I tried to use Delphi's syntax for anonymous methods:

type
    fun = reference to function(): Integer;

Fpc shows a syntax error:

Error: Identifier not found "reference"

What's the Free Pascal equivalent to Delphi's anonymous methods, if any?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夏了南城 2024-12-17 10:28:06

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

Anonymous methods are not implemented in FreePascal. The list of such features is here.

烟雨凡馨 2024-12-17 10:28:06

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

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.

Anonymous methods are supported. Useful references:

The GitLab issue:
https://gitlab.com/freepascal.org/fpc/source/-/issues/24481

The forum annoucement:
https://forum.lazarus.freepascal.org/index.php?topic=59468.0

Finally, some examples given by Sven in the annoucement:

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.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文