call function with multiparameter:what is the best solution?

%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 comentario

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.

Iniciar sesión para comentar.

 Respuesta aceptada

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 comentarios

if i want to call using second parameter CaricoSistemi2Last_Struct(mat)
like the reserved word "arguments" it understands that the name passed feeds the second parameter and not the first?
Chunru
Chunru el 14 de Nov. de 2023
Editada: Chunru el 14 de Nov. de 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.
ok thanks

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Modeling en Centro de ayuda y File Exchange.

Preguntada:

el 13 de Nov. de 2023

Comentada:

el 14 de Nov. de 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by