Могу ли я вызвать метод классов, используя str2func? - PullRequest
1 голос
/ 07 декабря 2011

Я пытаюсь использовать 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] ?

Ответы [ 2 ]

2 голосов
/ 07 декабря 2011

Вам необходимо использовать функциональную нотацию, а не точечную нотацию.Следующие работы:

funHandle = str2func(['@process_' self.type])
funHandle(self) %# E1
1 голос
/ 07 декабря 2011

Вместо этого вы можете использовать feval :

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