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でスイッチ構造を使用して、型固有のメソッド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 に答える