classdef Dog
end
d=Dog()
;可以控制size(d)
吗?是否有一些要设置的属性
或要重载的方法
?
最终我有 d.data = [1, 2, 3]
并且想要 length(d) == 3
。我知道我可以制作d.length()
。顺便说一句,是否有 MATLAB“魔术方法”列表,即控制与类交互的函数,例如 subsref ?
最佳答案
在 MATLAB 中,不要将类方法视为与其他语言中的类方法类似。实际上,它们是函数的重载版本。
size(d)
与 d.size()
相同(与 d.size
相同,括号不需要调用函数),如果 d
是自定义类的对象,并且 size
已为该类重载。
因此,您可以在 classdef
的 methods
部分中定义function size
,以重载 size
你的类。您还可以在 @Dog/
目录中创建 size.m
文件来完成相同的操作。
例如,如果您创建一个包含函数定义的文件 @char/size.m
,则您将重载 char 数组的 size
。
上述内容适用于任何函数。有些功能在重载时可能会引起头痛。例如,重载 numel
时要小心,因为它可能会导致索引赋值表达式失败。 size
由 whos
命令以及 GUI 中的类似功能使用来显示变量信息,因此使其按预期方式运行非常重要。
您可能想要更改的对象行为显然不是函数,而是与运算符相关。每个运算符也由一个函数定义(包括索引中的 end
!)。请参阅the docs获取完整列表。
关于MATLAB set class `size`(类上的重载操作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73534180/