我可以使用str2func调用类方法吗?

时间:2011-12-06 23:34:21

标签: matlab matlab-class

我正在尝试使用str2func来调用我的类的不同方法,具体取决于特定的属性值(在本例中为obj.type)。

所以,我有

classdef myClass
    properties
           type %# values are different file extensions (LSM, TIFF, OIF etc...)
    end

    methods(public)
          function process(self)
                 %# here I would like to do something in the lines of
                 funHandle = str2func(['@()self.process_' self.type])
                 funHandle() %# E1
          end
    end
    methods(private)
          %# I have a bunch of methods named process_[type]
          process_LSM(self)
          process_TIF(self)
          % etc...
    end
end

然而,这不起作用。在线 E1 (上图)MATLAB抱怨类 self 未定义且Java可能没有运行?有没有让这个工作或我必须在方法进程中使用开关结构来调用类型特定的方法 process_ [type]

2 个答案:

答案 0 :(得分:2)

您需要在此处使用功能表示法,而不是点符号。以下作品:

funHandle = str2func(['@process_' self.type])
funHandle(self) %# E1

答案 1 :(得分:1)

您可能希望改为使用feval

feval(['@process_' self.type], self)