matlab - 在matlab中是否可以隐藏从handle类继承的方法?

标签 matlab

我正在为 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/

相关文章:

matlab - 从函数句柄获取绝对文件路径

matlab - 如何将一行的元素与同一矩阵中的每一行的元素进行比较

matlab - 查找正向过零和负向过零

matlab - CPLEX 原始不可行性

Matlab - 点云数据的曲线拟合

matlab - 在命令行中更改 simbiology react 中的参数范围 - MATLAB TOOLBOX SIMBIOLOGY

matlab - matlab中的3D体素显示

matlab - 函数返回向量而不是标量

python - 根据另一个引用数组从一个数组中选择接近的匹配项

matlab - 我的观察结果小于每个的特征向量。有什么解决方案可以克服这个问题吗?