2011-12-06 10 views
1

特定のプロパティ値(この場合はobj.type)に応じてstr2funcを使用して自分のクラスの別のメソッドを呼び出そうとしています。str2funcを使用してクラスメソッドを呼び出すことはできますか?

だから、私はしかし

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はのセルフが未定義でJavaが実行されていない可能性があると訴えていますか?これを動作させるには離れていますか、または方法のスイッチ構造を使用する必要がありますかプロセスは、タイプ固有のメソッドを呼び出すために使用しますprocess_ [type]

答えて

2

ドット表記ではなく、機能上の表記法を使用する必要があります。以下の作品:

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

あなたが代わりにfevalを使用することもできます。

feval(['@process_' self.type], self) 
関連する問題