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"-
Двумерная матрица. Обратите внимание, что векторы и пустые матрицы имеют 2 измерения, одно из которых имеет длину 1, или оба длиной 0.
"3d"-
Имеет не более 3 измерений. Двумерная матрица — это 3-мерная матрица, третье измерение которой имеет длину 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–2023 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.2.0/Validating-the-type-of-Arguments.html