inputParser
Analisa e valida os argumentos de uma função.
Categoria: Programming > Functions
Sintaxe
p = inputParser
Cria um objeto analisador vazio.
parse(p, args...)
Associa args aos argumentos declarados e preenche p.Results.
p.Results, p.UsingDefaults, p.Unmatched
Leem os valores analisados, os nomes que ficaram no padrão e os pares não reconhecidos.
Descrição
Um inputParser é um objeto handle. Você declara os argumentos com addRequired, addOptional e addParameter e então chama parse(p, varargin{:}) dentro da função. Os argumentos obrigatórios são posicionais e vêm primeiro, os opcionais vêm depois, e os pares nome-valor por último.
Uma validação que falha gera um erro que cita o argumento e a função de validação. p.Results lista os campos em ordem alfabética, p.UsingDefaults nomeia os argumentos não fornecidos, e p.Unmatched guarda os pares não reconhecidos quando KeepUnmatched está ligado.
Argumentos de entrada
FunctionName- Propriedade: nome mostrado nas mensagens de erro.
CaseSensitive- Propriedade: diferencia maiúsculas nos nomes de parâmetros (padrão
false). KeepUnmatched- Propriedade: quando
true, pares nome-valor desconhecidos vão paraUnmatchedem vez de causar erro (padrãofalse). PartialMatching- Propriedade: aceita abreviações únicas dos nomes de parâmetros (padrão
true). StructExpand- Propriedade: aceita uma struct no lugar de pares nome-valor (padrão
true).
Argumentos de saída
p- O objeto analisador. Depois de
parse,p.Resultsé uma struct com um campo por argumento declarado.
Exemplo
Argumentos obrigatórios, opcionais e nome-valor
p = inputParser;
p.FunctionName = 'demo';
addRequired(p, 'n', @isnumeric);
addOptional(p, 'mode', 'fast', @ischar);
addParameter(p, 'Tol', 1e-3, @(x) x > 0);
parse(p, 4, 'slow', 'Tol', 0.1);
r = p.Results
p.UsingDefaults
try
parse(p, 4, 'fast', 'Tol', -1);
catch err
disp(err.message)
end
r = struct with fields:
Tol: 0.1000
mode: 'slow'
n: 4
ans =
0×0 empty cell array
The value of 'Tol' is invalid. It must satisfy the function: @(x)x>0.
Observações
O MatLivre não oferece addSwitch.