2012年10月25日木曜日

クラス宣言でのネスト

TStyleProvider で、さらりとクラス内レコードを使ってみました。

type
TStyleProvider = class(TObject)
strict private
type
TStyleData = record
private
(略)
end;
var
FStyles: TList<TStyleData>;
(略)
end;

以前の Delphi ではクラス内でクラス・構造体を宣言できなかったため、クラスが内部で管理する特に外に見せる必要の無いクラスまで、クラスの宣言は見えていました。

上の例で言えば

type
TStyleData = record
private
(略)
end;
TStyleProvider = class(TObject)
private
FStyles: TList<TStyleData>;
(略)
end;

となっていました。
TStyleProvider だけが必要な他のコードから、TStyleData も見えていたわけです。

クラス内でレコードやクラスを宣言できるようになった(Delphi 2007 から?)ことや、strict private が導入された(Delphi 2005 から?)おかげで見せたくないデータを断固見せないように実装できるので、すっきりしますね。

0 件のコメント:

コメントを投稿