Matlab では、次のようにクラスを定義できます。
classdef klass < handle
properties(Dependent)
prop
end
end
Matlab は、 のゲッターを定義しなくても、このクラスのオブジェクトをインスタンス化することに完全に満足していますprop
。アクセスしようとしたときにのみ失敗します(当然のことです)。GetMethod
プロパティの名前に基づいて動的に設定したいと思います。
残念ながら、プロパティが Dependent の場合でも、のmeta.property
フィールドGetMethod
は読み取り専用のままです。からの継承により、プロパティを追加dynamicprops
し、すべてのインスタンスでその GetMethod をプログラムで設定できるようになりますが、既存のプロパティを変更するために使用できるとは思えません。私はこのルートに行かなければならないかもしれませんが、すべてのオブジェクトに存在する必要があるため、クラスごとにゲッターを設定するだけです。そのようなことは可能ですか?prop
別の解決策として、何らかのキャッチオール方式を使用することもできます。他の言語では、これは Ruby ライクmethod_missing
または PHP ライクの__get()
. しかし、私の知る限り、Matlab には (文書化されているかどうかにかかわらず) アナログはありません。
(私の使用例: このクラスは多くのユーザー定義のサブクラスによって継承され、すべての依存プロパティは同様の方法でアクセスされ、プロパティ名に基づいて変更されるだけです。get.*
共通コードへの呼び出しをラップするメソッドをユーザーに記述する代わりに、依存するプロパティのすべてについて、必要なメタデータを含む無名関数ポインタを使用して動的に設定したいと思います)。