Я использую inputParser
для анализа пар ключ-значение. Я хотел бы запустить parse
, чтобы получить новые входящие пары ключ-значение, но это перезаписывает всю структуру Results
. Вот демонстрация поведения против того, что я хочу:сохранить inputParser.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
перезаписать предыдущие значения не по умолчанию, со значениями по умолчанию. Моя первая мысль состояла в том, чтобы сохранить первый набор значений, а затем снова вставить их в парсер. Результаты, но я обнаружил, что You cannot set the read-only property 'Results' of inputParser
.
Единственное решение, которое я вижу, заключается в том, чтобы добавить непеременные параметры, не заданные по умолчанию, из первого набора результатов в varargin как пары ключ-значение, но это звучит как беспорядок.
Есть ли лучший способ?
Спасибо за это, это очень помогает. Однако он зависит от значений по умолчанию - nan. Это моя ошибка в том, что я не рассматриваю это в моем примере, но в идеале я бы скорее сравнил со значениями по умолчанию, установленными в синтаксическом анализаторе. Я посмотрю, смогу ли я это понять и добавить к вашему ответу. Еще раз спасибо! – 7yl4r