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 измерений. Двумерная матрица — это 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"-
Значения расположены в одном векторе (столбце или строке).
В качестве альтернативы
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).Примечание для программистов: входные значения char могут вести себя странно из-за взаимодействия между char и cellstrings при вызове
ismemberна них. Но, вероятно, он «сделает то, что вы имели в виду», если вы просто используете его естественным образом. Для гарантии работы преобразуйте все массивы char в cellstrings с помощью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–2022 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/v7.2.0/Validating-the-type-of-Arguments.html