使用匿名功能,您可以返回任意数量的输出。我需要的是能够使用仿函数(匿名函数作为其他函数的参数),而不知道我将获得多少输出。
这是为了避免代码重复,方法是在while循环中注入函数调用,并在许多函数中重用。
示例:
function y = foo( x )
y = x;
end
function [y1, y2] = goo( x1, x2 )
y1 = x1;
y2 = x2;
end
function [ varargout ] = yolo( functor, varargin )
varargout = functor(varargin{:});
end
我希望能够致电:
y = yolo(@foo, 2)
[y1, y2] = yolo(@goo, 3, 4);
有没有办法实现这个目标? 感谢
答案 0 :(得分:3)
无法获取匿名函数的输出数(内联函数的函数句柄),因为输出始终为varargout
,因此nargout
始终返回{{ 1}}
-1
但是,看起来你没有匿名函数,而只是函数句柄来处理在myfunc = @(x, y) x + y;
nargout(myfunc)
% -1
文件中定义并具有明确数量的输出参数的普通函数。在这种情况下,您可以将.m
与nargout
索引相结合,以使用所有输出参数填充{:}
。
varargout