function y = myFunc(tR,mode)
if ~isfield(tR, 'isAvailable')
tR.isAvailable= false;
end
if tR.isAvailable
y = fullfile(workingFolder,'file.txt');
else
y = '';
switch(mode)
case '1'
.....
case '2'
.....
end
end
当我调用myFunc(tR,'1')时,它没问题 但是我也可以在没有myFunc(tR)模式的情况下调用myFunc
在某些情况下,如果参数中没有提供模式变量,myFunc不会执行switch case,我该如何说?
答案 0 :(得分:2)
如果用户提供的输入不足,请在函数中使用nargin
来提供一些默认输入。
答案 1 :(得分:2)
answer by Dennis Jaheruddin提供了很好的可能性列表,但我也发现使用exist
是一种有用的方法:
if exist('mode', 'var')
% Your switch statement here
end
答案 2 :(得分:1)
使用exist可能是最简单的方法,如果你想在末尾排除元素,尽管nargin
也可以做到这一点。一般情况下,如果变量具有有意义的位置或没有有意义的名称,我会使用nargin
,只有当exist
具有有意义的名称时才使用mode
。 See this question for more about this choice.
如果您想要排除一般的元素,使用varargin
可能是最好的方法。
但是,如果您只想在中间排除1个元素,那么一个简单的替代方案是:
如果您不想使用[]
,请将其设为if ~isempty(mode)
% Your switch statement here
end
,然后将切换语句放在此内:
if
当然,如果您忘记稍后在同一个函数中使用{{1}}语句,则会发生奇怪的事情。
答案 3 :(得分:0)
您可以使用varargin,但需要以不同方式访问参数。 另外,用nargin检查你有多少参数。
http://www.mathworks.de/de/help/matlab/ref/varargin.html
您的函数声明如下:
function y = myFunc(tR, varargin)