【发布时间】:2016-08-13 06:59:16
【问题描述】:
我正在使用inputParser 来解析键值对。我想运行parse 来获取新传入的键值对,但这会覆盖整个Results 结构。这是行为与我想要的行为的演示:
parser = inputParser
addParameter(parser, 'param1', nan, @isnumeric);
addParameter(parser, 'param2', nan, @isnumeric);
parse(parser, ['param1', 1234]);
% parser.Results is now {param1:1234, param2:nan}
% all good so far.
parse(parser, ['param1', 567]);
% parser.Results now {param1:567, param2:nan}
% this is also fine.
parse(parser, ['param2', 89]);
% parser.Results is now {param1:nan, param2:89}
% what I want to have : {param1:567, param2:89}
简而言之,我不希望parse 用默认值覆盖以前的非默认值。我的第一个想法是保存第一组值,然后将它们重新插入 parser.Results,但我发现You cannot set the read-only property 'Results' of inputParser。
我能看到的唯一解决方案是将第一组结果中的非默认、非重新给出的参数作为键值对添加到 varargin,但这听起来很混乱。
有没有更好的办法?
【问题讨论】:
标签: matlab parsing key-value overwrite optional-parameters