2012年10月22日月曜日

interface と implementation

割と知られている事だと思いますが、メソッドの宣言がしてあれば、メソッドの実装では、引数リストと戻値の型は省略できます。

01 type
02  TForm1 = class(TForm)
03  procedure FormCreate(Sender: TObject);
04  private
05  procedure Test(const iMsg: String);
06  function Test2(const iMsg: String): Boolean;
07  public
08  end;
09 
10 var
11  Form1: TForm1;
12 
13 implementation
14 
15 {$R *.dfm}
16 
17 { TForm1 }
18 
19 procedure TForm1.Test;
20 begin
21  ShowMessage(iMsg);
22 end;
23 
24 function TForm1.Test2;
25 begin
26  Result := True;
27  ShowMessage(iMsg);
28 end;

上記のリスト 5, 6 行目のように宣言さえしておけば、19, 24 の実現部では引数リストと戻値の型は省略できます。

ただ、普段は Shift + Ctrl + C を使って自動的に宣言部⇔実現部を作っていると思いますので、このような書き方は「できる」というだけで、使ってる人は居ないのではないでしょうか?
そもそもメリットが特に思いつかないし……

ちなみに、下記の様にメソッドだけではなく普通の手続きや関数でも同じ事ができます。

01 var
02  Form1: TForm1;
03 
04 function Test3(const iMsg: String): Boolean;
05 
06 implementation
07 
08 function Test4(const iMsg: String): Boolean; forward;
09 
10 function Test3;
11 begin
12  Result := Test4(iMsg);
13 end;
14 
15 function Test4;
16 begin
17  Result := True;
18  ShowMessage(iMsg);
19 end;

0 件のコメント:

コメントを投稿