Spec-Zone.ru › Octave 9

11.9.2 Проверка типа аргументов

Помимо количества аргументов, входные данные можно проверять на соответствие различным свойствам. Для строковых аргументов используется validatestring, а для числовых — validateattributes.

: validstr = validatestring (str, strarray)
: validstr = validatestring (str, strarray, funcname)
: validstr = validatestring (str, strarray, funcname, varname)
: validstr = validatestring (…, position)

Проверяет, является ли str элементом или подстрокой элемента в strarray.

Если str — это проверяемая символьная строка, а strarray — массив ячеек со строками допустимых значений, то validstr будет проверенной формой str, где проверка определяется тем, что str является элементом или подстрокой validstr. Это полезно как для проверки, так и для развёртывания коротких параметров, например "r", в их полные формы, например "red". Если str является подстрокой validstr и найдено несколько совпадений, будет возвращено самое короткое совпадение, если все совпадения являются подстроками друг друга. В противном случае будет выдана ошибка, так как развёртывание str неоднозначно. Сравнение не учитывает регистр.

Дополнительные входные аргументы funcname, varname и position являются необязательными и позволяют сделать любое создаваемое сообщение об ошибке проверки более конкретным.

Примеры:

validatestring ("r", {"red", "green", "blue"})
⇒ "red"

validatestring ("b", {"red", "green", "blue", "black"})
⇒ error: validatestring: multiple unique matches were found for 'b':
   blue, black

См. также: strcmp, strcmpi, validateattributes, inputParser.

: validateattributes (A, classes, attributes)
: validateattributes (A, classes, attributes, arg_idx)
: validateattributes (A, classes, attributes, func_name)
: validateattributes (A, classes, attributes, func_name, arg_name)
: validateattributes (A, classes, attributes, func_name, arg_name, arg_idx)

Проверяет допустимость входного аргумента.

Проверяет, что аргумент A допустим, то есть принадлежит одному из классов classes и удовлетворяет всем атрибутам attributes. Если это не так, возникает ошибка с соответствующим сообщением. Сообщение об ошибке можно дополнить именем функции fun_name, именем аргумента arg_name и его позицией во входных данных arg_idx.

classes должен быть массивом ячеек со строками (допускается пустой массив ячеек), содержащими имена классов (помните, что в имени класса учитывается регистр). Помимо имени класса, допустимы также следующие названия категорий:

"float"

Число с плавающей точкой, включающее классы "double" и "single".

"integer"

Целое число, включающее классы (u)int8, (u)int16, (u)int32, (u)int64.

"numeric"

Числовое значение, представляющее собой число с плавающей точкой или целое число.

attributes должен быть массивом ячеек с названиями проверок для A. Для некоторых из них требуется указать дополнительное значение сразу после названия (подробности см. ниже).

"<="

Все значения меньше или равны следующему значению в attributes.

"<"

Все значения меньше следующего значения в attributes.

">="

Все значения больше или равны следующему значению в attributes.

">"

Все значения больше следующего значения в attributes.

"2d"

Двумерная матрица. Обратите внимание, что векторы и пустые матрицы имеют два измерения, одно из которых имеет длину 1 или оба имеют длину 0.

"3d"

Имеет не более трёх измерений. Двумерная матрица является трёхмерной матрицей, третье измерение которой имеет длину 1.

"binary"

Все значения равны 1 или 0.

"column"

Значения расположены в одном столбце.

"decreasing"

Ни одно значение не равно NaN, и каждое значение меньше предыдущего.

"diag"

Значение является диагональной матрицей.

"even"

Все значения являются чётными числами.

"finite"

Все значения конечны.

"increasing"

Ни одно значение не равно NaN, и каждое значение больше предыдущего.

"integer"

Все значения являются целыми. Это отличается от использования isinteger, которая проверяет только целочисленный тип. Эта проверка определяет, является ли каждое значение в A целым числом, то есть не имеет ли оно дробной части.

"ncols"

Имеет ровно столько же столбцов, сколько следующее значение в attributes.

"ndims"

Имеет ровно столько же измерений, сколько следующее значение в attributes.

"nondecreasing"

Ни одно значение не равно NaN, и каждое значение больше или равно предыдущему.

"nonempty"

Не является пустым.

"nonincreasing"

Ни одно значение не равно NaN, и каждое значение меньше или равно предыдущему.

"nonnan"

Ни одно значение не является NaN.

"nonnegative"

Все значения неотрицательны.

"nonsparse"

Не является разреженной матрицей.

"nonzero"

Ни одно значение не равно нулю.

"nrows"

Имеет ровно столько же строк, сколько следующее значение в attributes.

"numel"

Имеет ровно столько же элементов, сколько следующее значение в attributes.

"odd"

Все значения являются нечётными числами.

"positive"

Все значения положительны.

"real"

Является матрицей без комплексных значений.

"row"

Значения расположены в одной строке.

"scalar"

Является скаляром.

"size"

Длина размера равна значениям следующего элемента в attributes. Следующее значение должно быть массивом, содержащим длину каждого измерения. Чтобы пропустить проверку для определённого измерения, можно использовать значение NaN.

"square"

Является квадратной матрицей.

"vector"

Значения расположены в одном векторе (столбце или строке).

См. также: isa, validatestring, inputParser.

В качестве альтернативы validateattributes доступны несколько более коротких вспомогательных функций для проверки отдельных свойств.

: mustBeFinite (x)

Требует, чтобы входной аргумент x был конечным.

Выдаёт ошибку, если какой-либо элемент входного аргумента x не является конечным, согласно проверке isfinite (x).

См. также: mustBeNonNan, isfinite.

: mustBeGreaterThan (x, c)

Требует, чтобы входной аргумент x был больше c.

Выдаёт ошибку, если какой-либо элемент входного аргумента x не больше c, согласно проверке x > c.

См. также: mustBeGreaterThanOrEqual, mustBeLessThan, gt.

: mustBeGreaterThanOrEqual (x, c)

Требует, чтобы входной аргумент x был больше или равен c.

Выдаёт ошибку, если какой-либо элемент входного аргумента x не больше или не равен c, согласно проверке x >= c.

См. также: mustBeGreaterThan, mustBeLessThanOrEqual, ge.

: mustBeInteger (x)

Требует, чтобы входной аргумент x имел целочисленное значение (но не обязательно целочисленный тип).

Выдаёт ошибку, если какой-либо элемент входного аргумента x не является конечным вещественным числовым значением с целочисленным значением, согласно различным проверкам.

См. также: mustBeNumeric.

: mustBeLessThan (x, c)

Требует, чтобы входной аргумент x был меньше c.

Выдаёт ошибку, если какой-либо элемент входного аргумента x не меньше c, согласно проверке x < c.

См. также: mustBeLessThanOrEqual, mustBeGreaterThan, lt.

: mustBeLessThanOrEqual (x, c)

Требует, чтобы входной аргумент был меньше или равен заданному значению.

Выдаёт ошибку, если какой-либо элемент входного аргумента x не меньше или не равен c, согласно проверке x <= c.

См. также: mustBeLessThan, mustBeGreaterThanOrEqual, le.

: mustBeMember (x, valid)

Требует, чтобы входной аргумент x принадлежал множеству заданных допустимых значений.

Выдаёт ошибку, если какой-либо элемент входного аргумента x не принадлежит множеству valid, согласно проверке ismember (x).

Примечание по программированию: символьные входные данные могут вести себя неожиданно из-за взаимодействия символьных массивов и массивов ячеек со строками при вызове для них ismember. Однако, если использовать её привычным образом, она, вероятно, будет «делать то, что нужно». Чтобы гарантировать корректную работу, преобразуйте все символьные массивы в массивы ячеек со строками с помощью cellstr.

См. также: mustBeNonempty, ismember.

: mustBeNegative (x)

Требует, чтобы входной аргумент x был отрицательным.

Выдаёт ошибку, если какой-либо элемент входного аргумента x не является отрицательным, согласно проверке x < 0.

См. также: mustBeNonnegative.

: mustBeNonempty (x)

Требует, чтобы входной аргумент x не был пустым.

Выдаёт ошибку, если входной аргумент x пуст, согласно проверке isempty (x).

См. также: mustBeMember, mustBeNonzero, isempty.

: mustBeNonNan (x)

Требует, чтобы входной аргумент x не содержал NaN.

Выдаёт ошибку, если какой-либо элемент входного аргумента x является NaN, согласно проверке isnan (x).

См. также: mustBeFinite, mustBeNonempty, isnan.

: mustBeNonnegative (x)

Требует, чтобы входной аргумент x не был отрицательным.

Выдаёт ошибку, если какой-либо элемент входного аргумента x является отрицательным, согласно проверке x >= 0.

См. также: mustBeNonzero, mustBePositive.

: mustBeNonpositive (x)

Требует, чтобы входной аргумент x не был положительным.

Выдаёт ошибку, если какой-либо элемент входного аргумента x является положительным, согласно проверке x <= 0.

См. также: mustBeNegative, mustBeNonzero.

: mustBeNonsparse (x)

Требует, чтобы входной аргумент x не был разреженным.

Выдаёт ошибку, если входной аргумент x является разреженным, согласно проверке issparse (x).

См. также: issparse.

: mustBeNonzero (x)

Требует, чтобы входной аргумент x не был равен нулю.

Выдаёт ошибку, если какой-либо элемент входного аргумента x равен нулю, согласно проверке x == 0.

См. также: mustBeNonnegative, mustBePositive.

: mustBeNumeric (x)

Требует, чтобы входной аргумент x был числовым.

Выдаёт ошибку, если входной аргумент x не является числовым, согласно проверке isnumeric (x).

См. также: mustBeNumericOrLogical, isnumeric.

: mustBeNumericOrLogical (x)

Требует, чтобы входной аргумент x был числовым или логическим.

Выдаёт ошибку, если входной аргумент x не является числовым или логическим, согласно проверке isnumeric (x) || islogical (x).

См. также: mustBeNumeric, isnumeric, islogical.

: mustBePositive (x)

Требует, чтобы входной аргумент x был положительным.

Выдаёт ошибку, если какой-либо элемент входного аргумента x не является положительным, согласно проверке x > 0.

См. также: mustBeNonnegative, mustBeNonzero.

: mustBeReal (x)

Требует, чтобы входной аргумент x был вещественным.

Выдаёт ошибку, если входной аргумент x не является вещественным, согласно проверке isreal (x).

См. также: mustBeFinite, mustBeNonNan, isreal.

© 1996–2026 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v9.4.0/Validating-the-type-of-Arguments.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API