2013-11-09 37 views
2

我有以下情形。在myClass.m我已經定義MATLAB上的nargin類方法返回-1

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

然後我執行

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

,並得到結果-1,而我希望1.功能仍然只接受一個參數。 我實際上想把句柄傳遞給另一個函數(在這個函數中我沒有訪問權限),它檢查參數的數量,我希望檢查範圍(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 

更新我自己的包裝的東西解決了這一問題 我意識到nargin(@(X)@ obj.foo),還做什麼,我想