How can I use NARGIN/NARGOUT to determine the number of input/output arguments of an object method?
4 次查看(过去 30 天)
显示 更早的评论
I am trying to determine the number of input/output arguments of an object's method. When the name of any object method is passed to NARGIN/NARGOUT, the returned value is always -1 regardless of the number of inputs/outputs specified in the method signature.
The following syntax returns -1 for any MethodName:
nargout('MethodName')
采纳的回答
MathWorks Support Team
2010-9-20
The ability to call NARGIN/NARGOUT directly on object methods is not available in MATLAB. As a workaround, specify the class and method names explicitly using the following syntax:
nargout('ClassName>ClassName.MethodName')
0 个评论
更多回答(1 个)
Markus Leuthold
2015-4-16
It's almost five years later and this bug still exists. Any news from Mathworks on how to handle this situation in 2015?
Example:
Class C
classdef C < handle
methods
function r=fcn1(~)
r='run fcn1';
end
function fcn2(~)
disp('run fcn2');
end
end
end
function run
function run(f)
switch nargout(f)
case 0
feval(f);
case 1
disp(feval(f));
case -1
disp('bug')
end
What I expect from the following code
>> c=C;
>> run(@c.fcn1)
run fcn1
>> run(@c.fcn2)
run fcn2
Instead I get
>> c=C;
>> run(@c.fcn1)
bug
>> run(@c.fcn2)
bug
How do you recommend to workaround in case where you want to know nargout from a function handle AND evaluate a function handle?
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Software Development Tools 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!