2013-11-09 2 views
2

У меня есть следующий сценарий. В myClass.m Я определилnargin по методу класса matlab возвращает -1

classdef myClass 
    ... 
    methods 
     function y = foo(this, x) 
      ... 
     end 
    end 
end 

Тогда я исполню

obj = myClass(); 
nargin(@obj.foo) 

и получить в результате -1, а я бы ожидать 1. Функция, тем не менее принимает только один аргумент. Я действительно хочу передать дескриптор другой функции (в которой у меня нет доступа), которая проверяет количество аргументов, и я хочу, чтобы проверка nargin (f) == 1 была успешной. Есть ли способ сделать это?

PS Я знаю, что если я определяю метод как статический, я получу правильный результат, вызвав nargin(@(x)Test.foo), но метод будет обращаться к переменным класса.

ответ

1

Я исправил эту проблему, определив свою собственную оболочку, что-то вроде

function y = mywrapper(f, x) 
%MYWRAPPER nargin(@(x)mywrapper(f, x)) is 1 as it should be 
y = f(x); 

end 

обновление я понял, что Наргин (@ (х) @ obj.foo), также делает то, что я хотел

Смежные вопросы