Delphi 中三種回調函數形式解析

Delphi 支持三種形式的回調函數:

  • 全局函數
    這種方式幾乎是所有的語言都支持的,類的靜態函數也可以歸爲此類,它保存的只是一個函數的代碼起始地址指針( Pointer )。在 Delphi 中聲明一般爲:
  • 類的成員函數
    類的成員函數作爲回調函數,與全局函數相比,需要關聯具體的類的實例,所以它是由兩部分組成,一個是對象的實例地址,一個是代碼地址,兩個指針,構成一個記錄(結構體),參考 Delphi 中 TMethod 的聲明:

    在 Delphi 中的聲明一般爲:

    在實踐中,你可以用 absolute 關鍵字來取出類的成員函數的 Code 和 Data 的值,Data 實際上就是對象的實例地址。Delphi 中的事件一般來說都是此類回調,要求事件響應函數是類的成員函數。
  • 匿名函數
    匿名函數 Delphi 實例上是通過接口來實現的,當你聲明一個匿名函數類型時,實際上是聲明瞭一個接口。比如我們看 Delphi 下面的匿名函數聲明:

    實際上是聲明瞭一個接口:

    然後當你實現一個匿名函數時,實際上就是實現了這個接口,那個匿名函數遵守接口的一切規則。Delphi 爲你隱藏了內部的一切細節~~~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章