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 para Unmatched em vez de causar erro (padrão false).
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
Saída
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.

Veja também

addRequired addOptional addParameter validateattributes