Delphi 新語法之Helper

2021-09-05 22:10:56 字數 1939 閱讀 7298

技術交流,dh講解.

哈哈,好久沒有寫這個系列了.今天在看vcl源**的時候,看見了這個.

還是宣告一下這個是在d7以後的版本才有的.謝謝,不要噴我!

當我們想給乙個類增加乙個方法或者成員變數,但是這個類又被很多單元引用了,我們直接去該這個類,肯定是很不明智的,怎麼辦?

對了,物件導向的話,我們可以繼承一下不就ok了,的確可以.但是如果結構體呢?其實這個關鍵更像是為結構體準備的

不過我這裡想說乙個helper關鍵字的用法.

類助手 可以擴充套件乙個類但是不用繼承,而且在uml中是沒有的.

簡單的語法:

type

助手類名 = class helper [(基類列表)] for 被擴充套件的類名

成員變數列表

end;

我們可以看到很簡單,就是class helper.當然這裡我得說一下了,record也是可以的.誰叫record的外號叫做小類.

我們對乙個類可以定義多個助手類,但是擴充套件原類特定處**的助手類只能有0個或者1個.

來個簡單的例子吧.

type

tmyclass=class

proceduremyproc;

functionmyfunc: integer;

end;

.. .

proceduretmyclass.myproc;

var

x: integer;

begin

x:= myfunc;

end;

functiontmyclass.myfunc: integer;

begin

.. .

end;

接下來就是它的助手類了.

type

tmyclasshelper=classhelperfortmyclass

procedurehelloworld;

functionmyfunc: integer;

end;

.. .

proceduretmyclasshelper.helloworld; //新增的新方法

begin

writeln(self.classname);

end;

functiontmyclasshelper.myfunc: integer; //覆蓋原方法

begin

.. .

end;

使用:var

x: tmyclass;

begin

x:= tmyclass.create;

x.myproc;

// 呼叫tmyclass.myproc

x.helloworld;

// 呼叫 tmyclasshelper.helloworld

x.myfunc;

// 呼叫tmyclasshelper.myfunc

end.

就是這麼簡單,希望大家能用到.

今天就講到這裡,我是dh;

OC新語法總結

1.方法與順序無關 2.列舉繫結資料型別 enum typedef nsuinteger language 3.屬性不用寫 synthesize 4.語法簡化 4.1 nsnumber nsnumber value value 12345 value 123.45f value 123.45 val...

markdown 最新語法

本markdown編輯器使用stackedit修改而來,用它寫部落格,將會帶來全新的體驗哦 markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的html頁面。維基百科 使用簡單的符號標識不同的標題,將某些文字標記為粗體或者斜體,建立乙個鏈結等,詳細...

七 新語法補充

新語法 示例等價於 說明 data 1 data text abcde 2 loop at itab into data wa endloop.1 data text type string.text abcde 2 data wa like line of itab.loop at itab in...