matlab - 按名称获取 Class 属性
问题描述
是否可以通过名称动态访问类属性?
classdef ClassA < handle
properties
a
end
end
obj = ClassA;
obj.GetVar('a') = 10;
有没有类似的东西GetVar('a')
?
解决方案
obj
当结构或自定义对象的名称由字符串str
(我知道)给出时,有 4 种方法可以访问结构或自定义对象的字段。以下都等价于obj.a
,给定str='a'
:
使用(不推荐!):
eval
eval(['obj.',str])
-
S = substruct('.',str); subsref(obj,S)
使用
getfield
:getfield(obj,str)
使用点运算符的函数形式:
obj.(str)
后者当然是优选的。
subsref
并且subsasgn
很有趣,因为它们是您可以在类中重载以修改索引行为的方法。该getfield
方法的用途非常有限,但在obj.(str)
引入语法之前,它曾经是使用动态名称访问字段的唯一合理方法。
推荐阅读
- python - AzureML:如何删除分离的 Kubernetes 服务集群?
- javascript - gatsby require.resolve 在 createPage 中找不到模块
- python - 在嵌套字典中查找值的最有效方法
- sql - 将多个 SELECT 查询合并到一个 VIEW 中
- python - 在 AWS 中使用 pip 安装包
- javascript - 短路评估并将真或假分配给变量
- python - 等待按钮可点击问题
- matlab - 如何通过 MATLAB 绘制离散时间信号
- mysql - 无法在 laravel 5.8 中重命名外部列 - 未找到列错误
- javascript - Spotify API:错误 401,“未提供令牌”