3

私は論文のために Matlab でロボット工学アプリケーションを開発しています。C#、PHP、js などの経験があります。

私が作成したオブジェクトが何らかの方法で参照によって渡されることができれば幸いです。「ハンドルオブジェクト」と呼ばれるものと「値オブジェクト」と呼ばれるものがあると聞きました。「ハンドル オブジェクト」の作成方法に関する特定のドキュメントが見つかりません。通常、それらはグラフィック オブジェクトのようです。

参照渡しが可能な場合に簡単に実装できる設計パターンがいくつかあります。各空間をグローバル変数にせずに、特定のオブジェクトで「シミュレーション空間」を共有したいと考えています。オブジェクトの同期を維持するために、どこにでも ID を渡すことは避けたいと思います。このオブジェクトを渡すと実際にそれがコピーされるという事実を気にせずに、ロボット間で環境オブジェクトを共有したいと思います。(これは時間の経過とともにバグにつながります)

私の唯一の解決策は、多くの一般的なシステム オブジェクトの最新のコピーを持つ、奇妙なグローバル 'オブジェクト ブローカー' を持つことであると感じ始めています。このようなことは避けたいと思います!

どんなアドバイスも素晴らしいでしょう!

4

2 に答える 2

3

ハンドル オブジェクトは次の構文で作成されます

classdef myClass < handle
   properties
      % properties here
   end
   methods
      % methods here
   end
end

ドキュメントの参照を開始するのに適した場所は、クラスの開始ページです。値クラスとハンドル クラスは R2008a でのみ実装されており、R2009a 以降はかなりバグがないことに注意してください (最近のリリースではパフォーマンスがかなり改善されています)。

他の言語から来ている場合は、Matlab と他の言語の OOP の違いに関するこのセクションが役立ちます。

于 2013-01-04T22:04:20.747 に答える
0

クラスはハンドル抽象クラスから継承する必要があります

    classdef MyHandleClass < handle
         % // class stuff

このセマンティクスを持つクラスは、Java のような方法で参照によって渡すことができます。

ガイドのこのセクションも考慮してください。

于 2013-01-04T22:02:08.107 に答える