Optional Arguments in Function as Struct Input
조회 수: 30 (최근 30일)
이전 댓글 표시
I have a Matlab function with many optional arguments which I want to call with these arguments recursively... This is just a short example, my real code is much more complexe and I don't want to share it here... I know that this function seems kind of nonesense.
function [out] = calculateHatches(vec, args)
arguments
vec
args.Limit = 0
args.Color = 'red'
args.Time = '12:00'
% (and many more argumnts)
end
% some calculations that give me out
out = []
if args.Limit==0
for i=1:10
nargs = args;
nargs.Limit = 1;
% n arguments might change here ...
% calculateHatches(vec,'Limit',nargs.Limit,'Color',nargs.Color,'Time',nargs.Time)
nout = calculateHatches(vec,nargs)
out = [out, nout]
end
end
end
However, this won't work, is there a way to makt it work?
calculateHatches(vec,nargs)
But I have too many optional arguments that change over time of programming too much, that I don't want to write it into the code. This would mean a lot of administration work.
calculateHatches(vec,'Limit',nargs.Limit,'Color',nargs.Color,'Time',nargs.Time)
댓글 수: 0
채택된 답변
Steven Lord
2025년 1월 14일
댓글 수: 3
Stephen23
2025년 1월 15일
"However, I can use eval to make it work somehow but this is not really nice ^^..."
EVAL is the opposite of nice. The MATLAB approach is to use a comma-separated list:
tmp = namedargs2cell(nargs);
out = calculateHatches(vec,tmp{:});
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Startup and Shutdown에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!