FreePascal にオブジェクトとしてカスタム イテレータがあるとします。
{$MODE OBJFPC}
....
type TLuaTablesEnumerator = object
private
{...}
public
constructor Create( aState : PLua_State; aIndex : Integer );
destructor Destroy;
function MoveNext : Boolean;
function GetEnumerator : TLuaTablesEnumerator;
public
property Current : TLuaTable read FCurrent;
end;
Destroy
常に呼び出される保証はありますか?ドキュメントには言及されていませんが、基本的なケースを試してみましたが、そのようです。
特に - はDestroy
、次の場合にも常に呼び出されます。
- 通常どおりループを終了します
Break
orを使用して途中でループを終了しますExit
- 発生した例外を介してループを終了します
これらの質問のいずれかに対する答えが「いいえ」である場合 (フォローアップの質問)、イテレータがクラスの場合は変更されますか?