Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Analizar entradas de función

En este ejemplo se muestra cómo definir entradas obligatorias y opcionales, asignar valores predeterminados a entradas opcionales y validar todas las entradas en una función personalizada mediante el analizador de entrada.

El analizador de entrada proporciona una forma coherente de validar y asignar valores predeterminados a las entradas, lo que mejora la robustez y la capacidad de mantenimiento del código. Para validar las entradas, puede aprovechar las funciones existentes o escribir sus propias rutinas de validación.MATLAB®

Paso 1. Defina su función.

Cree una función en un archivo llamado.printPhoto.m La función tiene una entrada necesaria para el nombre de archivo y entradas opcionales para el acabado (brillante o mate), el espacio de color (RGB o CMYK), la anchura y la altura.printPhoto

function printPhoto(filename,varargin)

En la instrucción de declaración de función, especifique primero las entradas requeridas. Se usa para admitir entradas opcionales.varargin

Paso 2. Cree un objeto InputParser.

Dentro de la función, llame para crear un objeto de analizador.inputParser

p = inputParser;

Paso 3. Agregue entradas al esquema.

Agregue entradas al esquema de análisis en la función mediante, o.addRequiredaddOptionaladdParameter Para entradas opcionales, especifique los valores predeterminados.

Para cada entrada, puede especificar un identificador para una función de validación que comprueba la entrada y devuelve una lógica escalar (o) o errores.truefalse La función de validación puede ser una función existente (por ejemplo, o) o una función que cree (como una función anónima o una función local).MATLABischarisnumeric

En la función, es una entrada obligatoria.printPhotofilename Definir y como entradas opcionales, y como pares de valores de parámetro opcionales.finishcolorwidthheight

defaultFinish = 'glossy'; validFinishes = {'glossy','matte'}; checkFinish = @(x) any(validatestring(x,validFinishes));  defaultColor = 'RGB'; validColors = {'RGB','CMYK'}; checkColor = @(x) any(validatestring(x,validColors));  defaultWidth = 6; defaultHeight = 4;  addRequired(p,'filename',@ischar); addOptional(p,'finish',defaultFinish,checkFinish) addOptional(p,'color',defaultColor,checkColor) addParameter(p,'width',defaultWidth,@isnumeric) addParameter(p,'height',defaultHeight,@isnumeric)

Entradas que se agregan con o son argumentos.addRequiredaddOptionalpositional Cuando se llama a una función con entradas posicionales, especifique esos valores en el orden en que se agregan al esquema de análisis.

Las entradas agregadas no son posicionales, por lo que puede pasar valores para antes o después de los valores.addParameterheightwidth Sin embargo, las entradas de valor de parámetro requieren que se pase el nombre de entrada (o) junto con el valor de la entrada.'height''width'

Si la función acepta cadenas de entrada opcionales o vectores de caracteres y pares de nombre y valor de parámetro, especifique las funciones de validación para las entradas opcionales. De lo contrario, el analizador de entrada interpreta las cadenas opcionales o vectores de caracteres como nombres de parámetro. Por ejemplo, la función de validación garantiza que se interpreta como un valor para y no como un nombre de parámetro no válido.checkFinishprintPhoto'glossy'finish

Paso 4. Establezca las propiedades para ajustar el análisis (opcional).

De forma predeterminada, el analizador de entrada hace suposiciones sobre la sensibilidad de mayúsculas y minúsculas, los nombres de función, las entradas de matriz de estructura y si se permiten nombres y valores de parámetros adicionales que no están en el esquema. Las propiedades permiten definir explícitamente el comportamiento. Establecer propiedades mediante la notación de puntos, similar a la asignación de valores a una matriz de estructura.

Permite aceptar entradas de valor de parámetro adicionales que no coincidan con el esquema de entrada estableciendo la propiedad del analizador de entrada.printPhotoKeepUnmatched

p.KeepUnmatched = true;

Si es (valor predeterminado), el analizador de entrada emite un error cuando las entradas no coinciden con el esquema.KeepUnmatchedfalse

Paso 5. Analice las entradas.

Dentro de la función, llame al método.parse Pase los valores de todas las entradas de función.

parse(p,filename,varargin{:})

Paso 6. Utilice las entradas de la función.

Acceda a las entradas analizadas utilizando estas propiedades del objeto:inputParser

  • — Matriz de estructura con nombres y valores de todas las entradas del esquema.Results

  • — Matriz de estructura con nombres de parámetro y valores que se pasan a la función, pero que no están en el esquema (cuando es).UnmatchedKeepUnmatchedtrue

  • — Matriz de celdas con nombres de entradas opcionales a las que se asignan sus valores predeterminados porque no se pasan a la función.UsingDefaults

Dentro de la función, visualice los valores para algunas de las entradas:printPhoto

disp(['File name: ',p.Results.filename]) disp(['Finish: ', p.Results.finish])  if ~isempty(fieldnames(p.Unmatched))    disp('Extra inputs:')    disp(p.Unmatched) end if ~isempty(p.UsingDefaults)    disp('Using defaults: ')    disp(p.UsingDefaults) end

Paso 7. Llame a su función.

El analizador de entrada espera recibir las entradas de la siguiente manera:

  • Entradas requeridas en primer lugar, en el orden en que se agregan al esquema de análisis con.addRequired

  • Entradas posicionales opcionales en el orden en que se añaden al esquema.addOptional

  • Entradas posicionales antes del nombre de parámetro y pares de valor.

  • Nombres y valores de parámetro en el formulario.Name1,Value1,...,NameN,ValueN

Pase varias combinaciones de entradas a, algunas válidas y otras no válidas:printPhoto

printPhoto('myfile.jpg')
File name: myfile.jpg Finish: glossy Using defaults:      'finish'    'color'    'width'    'height'
printPhoto(100)
Error using printPhoto (line 23) The value of 'filename' is invalid. It must satisfy the function: ischar.
printPhoto('myfile.jpg','satin')
Error using printPhoto (line 23) The value of 'finish' is invalid. Expected input to match one of these strings:  'glossy', 'matte'  The input, 'satin', did not match any of the valid strings.  
printPhoto('myfile.jpg','height',10,'width',8)
File name: myfile.jpg Finish: glossy Using defaults:      'finish'    'color'

Para pasar un valor para la entrada posicional TH, especifique los valores para las entradas anteriores (– 1) o pase la entrada como un par de nombre y valor de parámetro.nn Por ejemplo, estas llamadas de función asignan los mismos valores a (valor predeterminado) y:finish'glossy'color

printPhoto('myfile.gif','glossy','CMYK')  % positional  printPhoto('myfile.gif','color','CMYK')   % name and value

Consulte también

|

Temas relacionados