Kan ik een klassenmethode gebruiken met str2func?

Ik probeer str2func te gebruiken om verschillende methoden van mijn klas aan te roepen, afhankelijk van een specifieke eigenschappenwaarde (in dit geval obj.type ).

Dus ik heb

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

Dit werkt echter niet. On line E1 (hierboven) klaagt MATLAB dat klasse self ongedefinieerd is en Java misschien niet actief is? Is er weg om dit te laten werken of moet ik een schakelstructuur gebruiken in methode proces om de typespecifieke methoden proces_ [type] aan te roepen?

1

2 antwoord

U moet hier een functionele notatie gebruiken, geen puntnotatie. De volgende werken:

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

Misschien wilt u in plaats daarvan feval gebruiken:

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