matlab - 获取对象名称作为字符串 MATLAB
问题描述
我想找到一种方法来获取 MATLAB 中对象实例的名称,并在 MATLAB R2019b 中将其返回。
所以在启动器构造函数中定义这样的实例
Properties
TorqueViewComponent
SpeedViewComponent
end
methods
function obj = Launcher()
TorqueViewComponent = GraphView(args...);
SpeedViewComponent = GraphView(args...);
end
end
然后在图形视图对象构造函数中类似于
function obj = GraphView(args...)
if strcmp(object name, 'TorqueViewComponent')
do some things;
elseif strcmp(object name, 'SpeedViewComponent')
do some other things;
end
end
本质上,我有多个 GraphView 对象实例,我想根据实例名称绘制不同的数据集。
如果您有任何问题,请告诉我,我可以更详细地解决问题
解决方案
你真的只有两个选择;子类 Graphview 以创建专门的子类,或传递额外的输入参数。可能有一些 hacky 解决方案可以让您以某种方式从调用者工作区获取名称,但这不太可能提高代码的可读性和可维护性。
子类化
例如
classdef TorqueGraphView < GraphView
methods
function obj = TorqueGraphView(varargin)
obj@SuperClass(varargin);
...
end
end
end
事实上,如果你真的不需要向 TorqueGraphView 传递额外的参数,你可以利用这样一个事实,即你可以对 Inherited Constructor 进行隐式调用
classdef TorqueGraphView < GraphView
% ... no constructor, only Torque-specific methods here
end
显式输入参数
否则,如果您认为对于如此小的调整来说这太过分了,那么您真的必须传递一个参数来表明这一点。如果您主要关心的是“混乱”,您可以考虑将您的参数打包到一个结构中,这样看起来会更整洁一些。这甚至可以帮助您很好地将特定于对象的参数与通用/选项相关的参数分开,例如
TorqueArgs = struct( ...
'type' , 'torque' , ...
'initialvalue', 0 , ...
'ylabel' , 'Torque [Nm]' , ...
'plottitle' , 'Torque' )
GraphOpts = struct ( ...
'axescolor', 'k' , ...
'linewidth', 3, , ...
'grid' , 'on' )
TorqueViewComponent = GraphView( TorqueArgs, GraphOpts );
推荐阅读
- python - 为什么 Jupyter notebook 的代码存在 Pycharm 没有的问题?
- c++ - 扣除 string_view 的 std::make_pair 的一些奇怪行为
- python - 如何在个人资料页面中显示注册人的特定内容 - Django
- java - 在 Java 中实现 LRU 缓存
- reactjs - 尝试从“react-native”导入 AppRegistry 后无法编译未找到的模块
- javascript - 无法安装组件:未定义模板或渲染函数。组件导入失败
- flutter - Flutter FutureBuilder widget not responding to Future resolution when chaining Futures with await
- google-cloud-build - Cloud Build 中的 imageurl 是什么?
- java - 如何从 Java 控制器访问变量?JavaFX,场景生成器
- chatbot - 在没有邀请的情况下作为 Slack 机器人写入直接消息