【问题标题】:MATLAB: How do I get the value of a class property given a property nameMATLAB:如何获取给定属性名称的类属性的值
【发布时间】:2012-01-09 16:43:05
【问题描述】:

如果我有一个类定义为

classdef myclass
  properties
     foo = 3;
     bar = 7;
  end
end

我想访问我要写的属性 foo

obj = myclass()
obj.foo % Gives me 3

但是,如果我只有一个属性名称的字符串表示,并且不知道它是哪个属性,那我该怎么做呢?如下例所示:

obj.someFunction('foo')  % or
someFunction(obj, 'foo') % should both give me the value of obj.foo

我想要做的是拥有一个属性列表,遍历它并获取特定对象的值。 似乎应该可以,但我在文档中找不到。

【问题讨论】:

    标签: matlab matlab-class


    【解决方案1】:

    你可以使用:

    obj = myclass();
    propName = 'foo';
    propValue = obj.(propName);
    

    有关详细信息,请参阅Generating Field Names from Variables 和 Dot-Parentheses。

    【讨论】:

      【解决方案2】:
      cellfun( @(prop) obj.(prop), properties(obj), 'UniformOutput', false )
      

      【讨论】:

      • 幸运的是,getfield 解决了这个问题并且不那么冗长了;)
      • getfield 很好,但 obj.(propname) 是“现代”方式。我只是在cellfun 中这样做,以展示如何在一次调用中获取所有属性。
      • 啊,我明白了。在阅读了 Kavkas 的答案后,它更加清晰了。谢谢!
      【解决方案3】:

      value = getfield(struct, 'field')

      【讨论】:

        猜你喜欢
        • 2014-06-27
        • 2020-02-28
        • 2011-08-29
        • 2010-10-14
        • 2014-05-12
        • 2012-01-08
        • 2010-09-14
        • 2013-01-02
        • 1970-01-01
        相关资源
        最近更新 更多