Ego*_*gon 21
MathWorks提供了一些信息,用于帮助它们以及PDF文档中的目的.我也从Yagtom项目(最初由Matt Dunham)发现这篇文章是对MATLAB中OOP的一个很好的介绍.
在帮助中,这解释如下(强调我的):
MATLAB支持两种类 - 句柄类和值类.您使用的类类型取决于类实例的所需行为以及要使用的功能.
如果要创建对类的对象中包含的数据的引用,并且不希望对象的副本生成对象数据的副本,请使用句柄类.例如,使用句柄类来实现包含电话簿条目信息的对象.多个应用程序可以访问特定的电话簿条目,但只能有一组基础数据.
句柄的引用行为使这些类能够支持事件,侦听器和动态属性等功能.
使用值类来表示不需要唯一的实体,例如数值.例如,使用值类来实现多项式数据类型.你可以复制
在马特邓纳姆的文章中,另一个好点是区分两种类型:
我们之前提到Matlab中的对象(默认情况下)是按值传递的,这意味着完整副本在方法调用中来回传递.但是,Matlab图形对象通过引用传递(通过句柄).如果我们子类化内置的句柄类[...],那么我们类的对象也将通过引用传递,而不是值.
我个人倾向于使用句柄类来获取我习惯使用Java的一些语法:对于句柄类,您可以让对象存储所有信息,这样您就可以执行类似sort(a)(或a.sort())的操作.对于值类,等价于a = sort(a)(或a = a.sort()).对于运算符,第一种语法完全没有意义,但第二种语言显然是普遍使用的:例如a = a + b(这相当于a = plus(a,b)和a = a.plus(b)).
或者至少,这是我倾向于用来区分的东西.