我正在为Matlab开发一个机器人应用程序。我在C#,PHP,js等方面经验丰富。
如果我创建的对象可以某种方式通过引用传递,我会很高兴。我听说有些东西叫做“处理对象”,有些东西叫做“价值对象”。我找不到任何关于如何创建“句柄对象”的具体文档,看起来它们通常是图形对象。
我有一些设计模式,当通过引用传递时很容易实现。我希望某些对象能够共享“模拟空间”,而不会将每个空间都变成全局变量。我想避免在任何地方传递ID,以保持对象同步。我想在机器人之间共享环境对象,而不必担心传递此对象实际上会复制它。 (随着时间的推移会导致错误)
我开始觉得我唯一的解决方案就是拥有一个奇怪的全局“对象代理”,它拥有许多常见系统对象的最新副本。我希望避免这种事情!
任何建议都会很棒!
答案 0 :(得分:3)
句柄对象由以下语法
创建classdef myClass < handle
properties
% properties here
end
methods
% methods here
end
end
开始查看文档的好地方是classes start page。请注意,值和句柄类仅在R2008a中实现,并且自R2009a以来相当无错误(尽管最近的版本已经提高了性能)。
如果您来自其他语言,this section about the differences between Matlab and other languages OOP可能会有用。
答案 1 :(得分:0)
您的类应继承自handle抽象类
classdef MyHandleClass < handle
% // class stuff
具有此语义的类可以通过类似java的方式通过引用传递。
还要考虑指南的this section。