代码之家  ›  专栏  ›  技术社区  ›  Humam Helfawi

按名称获取类属性

  •  0
  • Humam Helfawi  · 技术社区  · 6 年前

    是否可以通过类属性的名称动态访问它?

    classdef ClassA < handle        
        properties
            a
        end        
    end
    
    obj = ClassA;
    obj.GetVar('a') = 10;
    

    有什么像 GetVar('a') ?

    1 回复  |  直到 6 年前
        1
  •  4
  •   Cris Luengo    6 年前

    有4种方法可以访问结构或自定义对象的字段 obj 当其名称由字符串给出时 str (据我所知)。以下各项均等同于 obj.a ,给定 str='a' :

    1. 使用 eval (不推荐!) :

      eval(['obj.',str])
      
    2. 使用 subsref (或) subsasgn 用于分配):

      S = substruct('.',str);
      subsref(obj,S)
      
    3. 使用 getfield :

      getfield(obj,str)
      
    4. 使用 functional form of the dot operator :

      obj.(str)
      

    后者当然是首选。

    亚瑟夫 亚SASGN 很有趣,因为它们是您将在类中重载以修改索引行为的方法。这个 盖特菲尔德 方法的使用非常有限,但在 obj.(str) 介绍了语法。