1

我试图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]

4

2 回答 2

2

您需要在这里使用功能符号,而不是点符号。以下作品:

funHandle = str2func(['@process_' self.type])
funHandle(self) %# E1
于 2011-12-07T00:24:12.093 回答
1

您可能想改用feval

feval(['@process_' self.type], self)
于 2011-12-07T05:13:35.227 回答