call function with multiparameter:what is the best solution?
2 views (last 30 days)
Show older comments
%WHAT IS best solution ?
%Solution A:
a)CaricoSistemi2Last_Struct(Settings,[])
b)CaricoSistemi2Last_Struct(Settings,mat)
function D_=CaricoSistemi2Last_Struct(Settings,mat)
if isempty(mat)
D1=load(Settings.tslist,'-mat');
D_=D1.StratList;
else
D_=mat;
end
....
....
end
%Solution B:
a)CaricoSistemi2Last_Struct(Settings)
b)CaricoSistemi2Last_Struct(Settings,mat)
function D_=CaricoSistemi2Last_Struct(Settings,mat)
if nargin<2
D1=load(Settings.tslist,'-mat');
D_=D1.StratList;
else
D_=mat;
end
....
....
end
1 Comment
Les Beckham
on 13 Nov 2023
I would say that this is mostly a matter of personal preference.
Solution B is probably more commonly used. Solution A is often used if you have additional arguments after your "optional" second argument.
Accepted Answer
Chunru
on 14 Nov 2023
You could also use arguments block. doc arguments for more details.
a)CaricoSistemi2Last_Struct(Settings)
b)CaricoSistemi2Last_Struct(Settings,mat)
function D_=CaricoSistemi2Last_Struct(Settings,mat)
arguments
Settings
mat = []; % default
end
if isempty(mat)
D1=load(Settings.tslist,'-mat');
D_=D1.StratList;
end
% More codes
3 Comments
Chunru
on 14 Nov 2023
Edited: Chunru
on 14 Nov 2023
Matlab function arguments are positional, meaning that the positions are important.
For example, you can not call using second parameter CaricoSistemi2Last_Struct(mat) in the following code
function D_=CaricoSistemi2Last_Struct(Settings,mat)
arguments
Settings
mat = []; % default
end
If you do want to use the name-value-pair way of passing argument, you can do the following
function D_=CaricoSistemi2Last_Struct(options)
arguments
options.Settings = [] % your default
options.mat = []; % default
end
Then you can call the function CaricoSistemi2Last_Struct(mat=matval)
Again, doc arguments for more details.
More Answers (0)
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!