在克里斯的博客: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;
什麼問題,請問「參考」關鍵字解決,不能用正常的程序來完成類型?
您錯過了匿名方法中最重要的關鍵特性之一,它是可變捕獲。其他的東西像傳遞或返回它們可以用常規的函數指針來完成,但變量捕獲不能。 –
謝謝@StefanGlienke指出。我忘記了這一切。當然,堆上發生的所有事情都會排除高速代碼中的這些東西。 – Johan