"参考"解决了什么问题

Joh*_*ica 6 delphi generics anonymous-methods

在Chris的博客上:http://delphihaven.wordpress.com/2011/07/14/weird-in-more-ways-than-one/

我找到了以下代码

type
  TLinkVisitor<T> = reference to procedure(const Item: T);

  TDoubleLinked<T> = record
    Prev: ^TDoubleLinked<T>;
    Next: ^TDoubleLinked<T>;
    Value: T;
    class function Create(const aValue: T): Pointer; static;
    function Add(const aValue: T): Pointer;
    procedure Delete;
    procedure DeleteAll;
    function First: Pointer;
    function Last: Pointer;
    procedure ForEach(const Proc: TLinkVisitor<T>);
  end;
Run Code Online (Sandbox Code Playgroud)

"引用"关键字解决了哪些问题无法通过正常的程序类型完成?

Dav*_*nan 11

通过一个reference程序,您可以使用:

  • 传统的程序,或
  • 对象,类或记录的方法,或
  • 匿名方法.

它是使用匿名方法的能力,这些方法将reference程序与所有其他过程类型区分开来.除了其他程序或方法类型之外,匿名方法的设置是变量捕获.

有关更详细的讨论,请参考以下答案:对象和引用之间有什么区别?.匿名方法的官方文档也值得一读.