是否可以通过名称动态访问类属性?
classdef ClassA < handle
properties
a
end
end
obj = ClassA;
obj.GetVar('a') = 10;
是否有类似GetVar('a')
的东西?
答案 0 :(得分:4)
当结构或自定义对象<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="@color/Primary" />
<item android:state_focused="false" android:color="@color/IconsColor" />
<item android:state_selected="false" android:color="@color/IconsColor" />
<item android:state_focused="true" android:color="@color/Primary" />
<item android:state_pressed="true" android:color="@color/white" />
<item android:color="@color/tabsScrollColor" />
</selector>
的名称由字符串obj
(我知道)给出时,有四种访问结构或自定义对象的字段的方法。给定str
,以下各项均等效于obj.a
:
使用eval
(不推荐!):
str='a'
eval(['obj.',str])
使用getfield
:
S = substruct('.',str);
subsref(obj,S)
使用functional form of the dot operator:
getfield(obj,str)
后者当然是首选。
obj.(str)
和subsref
很有趣,因为它们是您将在类中重载以修改索引行为的方法。 subsasgn
方法的用途非常有限,但是在引入getfield
语法之前,它曾经是使用动态名称访问字段的唯一明智的方法。