私は現在、Love2Dでゲームを開発しており、middleclassとして知られているOOPライブラリを使用しています。残念ながら、ミドルクラスはデストラクタ、つまり私がオブジェクトを破壊することを可能にするものをデフォルトでは持っていません。私はすべての私のオブジェクトをテーブルに格納するので、私はそれらをループし、描画と更新の機能を実行することができます。私のコードでは、オブジェクトがそれ自身を削除できるようにしたい。私は試しましたルアで自己削除
self = nil
これは動作しません!それを見つけるためにループせずにテーブルのオブジェクトキーを見つけ出し、それから単にtable.removeを使うことは可能でしょうか?これは、あとで参照があったように、それらのテーブルからも削除する必要があるように、依然として最適ではありません。 これはどのように達成できますか?
通常、オブジェクト指向プログラミングでは、オブジェクトを明示的に削除することはありません(ガベージコレクション以外の言語でメモリを解放する目的を除く)。オブジェクトを削除して何を達成しようとしていますか?あなたはゲームの世界からそれを削除しますか?もしそうなら、Love2Dはどこかで「ゲーム世界から取り除く」機能を持っているかもしれません。 –
なぜオブジェクト自体から 'table.remove'を使用しないのですか? '関数myclass:k、vのipairs(allObjects)のdestructor()は、v == selfならばtable.remove(allObjects、k)self = nil return end end end'のようになります。 – user6245072