Swanman's Horizon

性欲をもてあましつつなんらかの話をするよ。

拡張識別子。

海外のDelphiブログを色々見てる時に、変数名だか関数名の頭に&記号が付いてるのを(どこでだったか忘れたけど)目にして、さっき何となくヘルプ見たらあれは拡張識別子というものだった。
拡張識別子(というか&演算子)は予約語を識別子としてコンパイラに認識させるためのもので、これを使えばtypeやbeginなんて名前を変数名やメソッド名として利用できるみたい。

unit Unit1;

interface

type
  // Type = Integer; // エラー
  &Type = Integer; // OK

var
  // T: Type; // エラー
  foo: &Type; // OK
  bar: Unit1.Type; // OK
type
  THoge = class
  public
    // class procedure Begin; // NG
    class procedure &Begin; // OK
  end;

begin
  THoge.&Begin; // OK
  THoge.Begin; // OK
  with THoge do
  begin
    // Begin; // NG
    &Begin; // OK
  end;
end.

Delphiは6と2006と2010を持ってるんだけど、2006は正直メインとして使える感じではなくて、何らかの理由で使うときも簡単に戻れるように6で使える機能しか使ってなかったんだよね。だから実質6から2010に一気に飛んだ感じで、機能が増えまくってて全然使いこなせてない。というか何が増えたのか全然わかんねえ。以前から公式にDelphi 7以降の言語およびコンパイラの新機能なんてページが用意されてるけど、そういう調べればすぐに分かる目玉機能以外にも、もうちょっと細かい機能を紹介して欲しいなぁ。