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

Posted

技术标签:

【中文标题】我可以使用 str2func 调用类方法吗?【英文标题】:Can I call a classes method using str2func? 【发布时间】:2011-12-06 23:34:20 【问题描述】:

我正在尝试使用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 中使用开关结构来调用特定于类型的方法 process_[type]

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

您可能想改用feval:

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

【讨论】:

以上是关于我可以使用 str2func 调用类方法吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用Swing时的Java方法 - 可以在同一个类中的另一个事件方法中调用event方法吗?

子类可以直接调用父类的函数吗

java中在同一类中普通方法可以直接调用普通方法和静态方法吗?

一个类中直接调用另一个类的静态方法吗

python中可以直接用类调用方法吗

我们可以在抽象类中使用静态方法吗?