我有一个功能需要3个强制输入和1个可选:
f(A, B, C, X)
我想以这种方式使用匿名函数
h = @(X)f(A,B,C,X)
已经定义了A, B, C
,因此我可以调用h(1)
,代码运行f(A,B,C,1)
,h()
运行f(A,B,C)
。
我能够做到的唯一方法(如果我错了,请纠正我)正在使用varargin
。我定义了
f(A,B,C,varargin)
并使用
h = @(varargin)f(A,B,C,varargin)
问题在于,当我直接调用f(A,B,C,1)
时,在函数内部varargin = {1}
。如果我拨打h(1)
,我就会varargin = {{1}}
。我怎么能避免这种情况?有没有更好的方法来实现我想要的东西?
答案 0 :(得分:5)
您需要(或者更确切地说,最好)将varargin
扩展为comma-separated list并使用您当前的实现:
h = @(varargin)f(A,B,C,varargin{:})
是否有更好的方法的问题取决于问题的具体细节。