我有一个类,它有一个函数句柄作为其properties
.
classdef MyClass
properties
hfun %function handle
end
methods
function obj = Myclass(hfun,...)
%PROBLEM: validate that the input argument hfun is the right kind of function
if ~isa(hfun,'function_handle') || nargin(hfun)~=1 || nargout(hfun)~=1
error('hfun must be a function handle with 1 input and 1 output');
end
obj.hfun = hfun;
end
end
end
我想确保输入参数hfun
是一个具有 1 个输入和 1 个输出的函数句柄,否则它应该会出错。如果我可以更具体,我希望这个函数将 Nx3 数组作为输入参数并返回 Nx3 数组作为输出参数。
上面的代码适用于内置函数,f = @sqrt
但如果我尝试放入匿名函数f = @(x) x^(0.5)
,nargout(hfun)
则为 -1,因为它将匿名函数视为[varargout] = f(x)
. 此外,如果您将句柄输入到类方法中,例如f = @obj.methodFun
,它会将函数转换为对和[varargout] = f(varargin)
都返回 -1的形式。nargin
nargout
有没有人想出一种方便的方法来验证函数句柄作为输入参数?与它来自哪种函数句柄无关?