我正在为 MATLAB 中的超声仿真开发一个命令行应用程序。我们代码中的几乎每个对象都是 handle 的子类(作为引用传递)。我遇到的问题是,从 handle 类继承的所有方法都显示在 MATLAB 的“方法”部分下(参见下面的示例)。
我想要的是从句柄类中隐藏继承的方法,以便只有允许用户使用的函数显示在“方法”下。这样,如果用户想知道要使用哪些方法,他/她看起来就不会那么困惑。
示例测试类:
classdef Test < handle
methods
function myFunction(obj)
end
end
end
在命令行中:
T = Test()
T =
Test handle with no properties.
Methods, Events, Superclasses
点击“方法”后:
Methods for class Test:
Test delete findobj ge isvalid lt ne
addlistener eq findprop gt le myFunction notify
我想要的:
Methods for class Test:
Test myFunction
这在 MATLAB 中可行吗?
最佳答案
如果您在隐藏方法 block 中重载所有子类方法,我认为它会完全满足您的要求。
我不确定它适用于哪个版本的 Matlab,但它在 R2012b 中绝对适用于我。
异常(exception)是isvalid
,因为它是密封的,所以您不能在句柄子类中覆盖它。
classdef handle_light < handle
methods(Hidden)
function lh = addlistener(varargin)
lh = addlistener@handle(varargin{:});
end
function notify(varargin)
notify@handle(varargin{:});
end
function delete(varargin)
delete@handle(varargin{:});
end
function Hmatch = findobj(varargin)
Hmatch = findobj@handle(varargin{:});
end
function p = findprop(varargin)
p = findprop@handle(varargin{:});
end
function TF = eq(varargin)
TF = eq@handle(varargin{:});
end
function TF = ne(varargin)
TF = ne@handle(varargin{:});
end
function TF = lt(varargin)
TF = lt@handle(varargin{:});
end
function TF = le(varargin)
TF = le@handle(varargin{:});
end
function TF = gt(varargin)
TF = gt@handle(varargin{:});
end
function TF = ge(varargin)
TF = ge@handle(varargin{:});
end
function TF = isvalid(varargin)
TF = isvalid@handle(varargin{:});
end
end
end
如果将上述类保存到 handle_light.m,然后在命令窗口中键入 methods handle_light
,您将得到以下结果:
Methods for class handle_light:
handle_light isvalid
然后测试类变为:
classdef Test < handle_light
methods
function myFunction(obj)
end
end
end
这样做意味着您不需要将重载放在 Test 类中,这样可以使事情更整洁。
关于matlab - 在matlab中是否可以隐藏从handle类继承的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6621850/