MATLABでのハンドルクラスベースのORMの可能性について考えているときに、インスタンスのキャッシュの問題が発生しました。弱い参照や弱いマップを作成する方法をすぐに考えることはできませんでしたが、イベントリスナーで何かが考案される可能性があると思います。何か案は?
より詳しい情報
MATLABでは、(値クラスではなく)ハンドルクラスに参照セマンティクスがあります。MATLABに含まれている例は、containers.Map
クラスです。1つをインスタンス化して関数に渡すと、関数がオブジェクトに加えた変更はすべて、元の参照を介して表示されます。つまり、JavaまたはPythonオブジェクト参照のように機能します。
JavaやPythonと同様に、MATLABは、ハンドルクラスの各オブジェクトを参照しているものの数を何らかの方法で追跡します。これ以上存在しない場合、MATLABはオブジェクトを安全に削除できることを認識しています。
弱参照とは、オブジェクトを参照するものですが、ガベージコレクションの目的での参照としてはカウントされません。したがって、オブジェクトへの残りの参照のみが弱い場合、それは破棄される可能性があります。通常、イベントまたはコールバックは弱参照に提供できます。オブジェクトが破棄されると、そのオブジェクトへの弱参照が通知され、クリーンアップコードを実行できるようになります。
たとえば、弱値マップは、値(キーではなく)が弱参照として実装されることを除いて、法線マップに似ています。弱いマップクラスは、これらの弱い参照のそれぞれにコールバックまたはイベントを配置できるため、参照されるオブジェクトが削除されると、マップ内のキー/値エントリが削除され、マップが適切に整理されます。