f.m:</ p>
function [] = f(the_only_argument)
% Do awesome things here
end
G.M:
function [value] = g(the_only_argument)
% Do awesome things here
value = awesome_value;
end
是否存在某种ReturnsNothing,例如:
assert(ReturnsNothing(@f) & ~ReturnsNothing(@g))
P.S。我希望能够调用当前返回错误的arrayfun(@f, [1,1,1])
:
??? Error using ==> f
Too many output arguments.
答案 0 :(得分:5)
nargout('f')
和nargout('g')
能做你需要的吗?
如果您的函数具有可变数量的输出参数,请注意,因为nargout
将为该特殊情况返回负数。
答案 1 :(得分:3)
arrayfun(@f, [1,1,1])
抛出上述错误,因为f
没有定义输入,arrayfun
将为数组中的每个值调用f
(使用该值作为输入)。所以错误与f(1)
如果你需要一个在arrayfun
中运行但不接受输入的函数,你可以将它包装在一个匿名函数中,该函数会输入输入。
例如
arrayfun(@(~)f,[1,1,1])
不会导致错误,因为 arrayfun
不需要输出!
nargout
可以在函数外部使用,通过传递包含函数名称的字符串来检查它有多少定义的输出
e.g。使用问题中的函数
nargout('f')
ans =
0
nargout('g')
ans =
1
此外,如果varargout
存在,则将其计为单个输出,但返回负值以指示其存在
例如使用以下函数
function [value,varargout] = h()
...code
end
它返回
nargout('h')
ans =
-2