回調函數的本質,就是把函數當作參數(首先要定義函數類型)


//把一個方法當作另一個方法的參數, 就是回調方法, 大家習慣稱作回調函數

type
  TFunType = function(i: Integer): Integer; {聲明一個方法類型}

function MyFun(i: Integer): Integer;        {建立類型兼容的函數}
begin
  Result := i*2;
end;

{把函數當作參數, 再定義一個函數}
function MyTest(x: Integer; F: TFunType): Integer;
begin
  Result := F(x);
end;


{測試}
procedure TForm1.Button1Click(Sender: TObject);
var
  Fun: TFunType; {聲明一個 TFunType 的變量}
  i: Integer;
begin
  Fun := MyFun;  {讓方法變量 Fun 指向和它類型兼容的一個方法}

  {測試 Fun; Fun 是一個方法變量, 現在去執行那個方法, 它就可以當作那個方法來使用了}
  i := Fun(4);
  ShowMessage(IntToStr(i));  //8

  {把 Fun 當作參數使用; 把函數當作參數使用, 這就是回調函數}
  i := MyTest(4,Fun);
  ShowMessage(IntToStr(i));  //8
end;

 

http://www.cnblogs.com/del/archive/2008/01/15/1039476.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM