classdef Dog
end
d=Dog()
;是否可以控制size(d)
?是否有一些property
需要设置或method
需要过载?
最终,我喜欢d.data = [1, 2, 3]
,想要length(d) == 3
。我知道我可以制作d.length()
。顺便提一下,是否有MATLAB";魔术方法";,即控制与类交互的函数,如subsref?
在MATLAB中,不要认为类方法与其他语言中的类方法相似。实际上,它们是函数的重载版本。
如果d
是自定义类的对象,并且size
为该类重载,则size(d)
与d.size()
相同(与d.size
相同,调用函数不需要括号(。
因此,您可以在classdef
的methods
部分中定义function size
,以重载类的size
。您也可以在@Dog/
目录中创建一个size.m
文件来完成同样的任务。
例如,如果创建了一个文件@char/size.m
,其中包含函数定义,则会为char数组重载size
。
以上适用于任何函数。有些函数在过载时会引起头痛。例如,重载numel
时要小心,因为这可能会导致索引赋值表达式失败。whos
命令以及GUI中的类似功能使用size
来显示变量信息,因此让它按预期方式运行非常重要。
您可能想要更改的对象行为显然不是函数,它与运算符有关。每个运算符也由一个函数定义(包括索引中的end
!(。有关完整列表,请参阅文档。