11.9.2验证参数的类型

除了参数的数量之外,还可以检查输入的各种属性。验证用于字符串参数和验证贡献用于数字参数。

 
:validstar= 验证 (str,strarray)
:validstar= 验证 (str,strarray,函数名)
:validstar= 验证 (str,strarray,函数名,变量名)
:validstar= 验证 (…,位置)

验证str是中的元素或元素的子字符串strarray.

什么时候str是要测试的字符串,并且strarray是一个有效值的字符串数组,那么validstar将是的验证形式str其中验证定义为str成为的成员或子串validstar。这对于验证和扩展空头参数都很有用,例如r,转换为较长的形式,例如红色如果str是的子字符串validstar,并且有多个匹配,如果所有匹配都是彼此的子字符串,则将返回最短的匹配。否则,错误将受到谴责,因为的扩展str模棱两可。所有比较都不区分大小写。

附加输入函数名,变量名位置是可选的,这将使任何生成的验证错误消息更加具体。

示例:

validatestring(“r”,{“red”,“green”,“blue”})⇒ “红色”验证(“b”,{“红色”,“绿色”,“蓝色”,“黑色”})⇒ 错误:validatestring:为“b”找到多个唯一匹配项:蓝色、黑色

详见: 字符串比较函数,strcmpi,验证贡献,inputsparser.

 
:验证贡献 (A,,属性)
:验证贡献 (A,,属性,arg_idx)
:验证贡献 (A,,属性,函数名称)
:验证贡献 (A,,属性,函数名称,arg_name)
:验证贡献 (A,,属性,函数名称,arg_name,arg_idx)

检查输入参数的有效性。

确认参数A通过属于其中一个而有效,并持有所有属性。如果没有,则抛出错误,并相应地格式化消息。可以通过函数名称使错误消息更加完整fun_name,参数名称arg_name,及其在输入中的位置arg_idx.

必须是字符串的元胞数组(不允许使用空元胞数组)和类的名称(记住类名区分大小写)。除了类名之外,以下类别名称也是有效的:

浮动

包含类的浮点值doublesingle.

整数

整数值,包括类(u)int8、(u)int 16、(u)int 32和(u)int64。

“数字”

包含浮点值或整数值的数值。

属性必须是具有检查名称的元胞数组A。其中一些要求在该日期后立即提供附加值(详见下面的每个详细信息)。

"<="

中的所有值都小于或等于以下值属性.

"<"

中的所有值都小于以下值属性.

">="

中的所有值都大于或等于以下值属性.

">"

中的所有值都大于以下值属性.

“2d”

二维矩阵。注意向量和空矩阵有二维,其中一个长度为1,或者两个长度都为0。

“3d”

不超过3个维度。2维矩阵是3维长度为1的3维矩阵。

二进制的

所有值都是1或0。

值排列在一列中。

“减少”

没有值是NaN,并且每个都小于前一个。

“diag”

值是一个对角矩阵。

即使

所有值都是偶数。

有限的

所有值都是有限的。

“增加”

没有值是NaN,并且每个都大于前一个。

整数

所有值都是整数。这与使用不同isiteger其仅检查其为整数类型。这将检查中的每个值A是一个整数值,即没有小数部分。

“ncols”

具有与中的下一个值完全相同的列数属性.

“ndims”

具有与中的下一个值完全相同的维度属性.

“不减少”

没有值是NaN,并且每个都大于或等于前一个。

“非空”

它不是空的。

“不增加”

没有值是NaN,并且每个都小于或等于前一个。

“nonnan”

没有值是NaN.

“非负”

所有值均为非负值。

“不解析”

它不是一个稀疏矩阵。

“非零”

没有值为零。

“nrows”

具有与中的下一个值完全相同的行数属性.

“numel”

具有与中的下一个值完全相同的元素数属性.

古怪的

所有值都是奇数。

积极乐观的

所有值都是正值。

真实的

它是一个非复杂矩阵。

一行

值排列在一行中。

“标量”

它是一个标量。

size

其大小的长度等于中下一个的值属性。下一个值必须是具有每个维度的长度的数组。若要忽略对某个维度的检查,则的值NaN可以使用。

广场

是一个正方阵。

“向量”

值排列在单个向量(列或向量)中。

详见: isa,验证,inputsparser.

作为的替代方案验证贡献有几个方便快捷的函数来检查各个属性。

 
:mustBeFinite (x)

要求输入x是有限的。

如果输入的任何元素都会引发错误x不是有限的,从isfinite(x).

详见: mustBeNonNan,isfinite.

 
:必须大于 (x,c)

要求输入x大于c.

如果输入的任何元素都会引发错误x不大于c,从确定x>c.

详见: mustBeGreaterThanOrEqual,mustBeLessThan,gt.

 
:mustBeGreaterThanOrEqual (x,c)

要求输入x大于或等于c.

如果输入的任何元素都会引发错误x不大于或等于c,从确定x>=c.

详见: 必须大于,必须小于等于,ge.

 
:mustBeInteger (x)

要求输入x是整数值的(但不一定是整数类型的)。

如果输入的任何元素都会引发错误x不是从各种检查确定的有限、实数、整数值。

详见: 必须为数字.

 
:mustBeLessThan (x,c)

要求输入x小于c.

如果输入的任何元素都会引发错误x不小于c,从确定x<c.

详见: 必须小于等于,必须大于,书信电报.

 
:必须小于等于 (x,c)

要求输入小于或等于给定值。

如果输入的任何元素都会引发错误x不小于或等于c,从确定x<=c.

详见: mustBeLessThan,mustBeGreaterThanOrEqual,le.

 
:mustBeMember (x,有效的)

要求输入x是一组给定有效值的成员。

如果输入的任何元素都会引发错误x不是集合的成员有效的,从确定ismember(x).

编程注意:从于调用时字符和单元字符串之间的相互作用,字符输入可能会表现得很奇怪ismember在他们身上。但如果你只是自然地使用它,它可能会“为所欲为”。为了保证操作,使用将所有char数组转换为数组字符串cellstr.

详见: mustBeNonempty,ismember.

 
:mustBeNegative (x)

要求输入x是负数。

如果输入的任何元素都会引发错误x不是负数,从确定x< 0.

详见: mustBeNonnegative.

 
:mustBeNonempty (x)

要求输入x不是空的。

如果输入x为空,从确定isempty(x).

详见: mustBeMember,mustBeNonzero,isempty.

 
:mustBeNonNan (x)

要求输入x不是-NaN.

如果输入的任何元素都会引发错误xNaN,从确定不是吗(x).

详见: mustBeFinite,mustBeNonempty,不是吗.

 
:mustBeNonnegative (x)

要求输入x不是否定的。

如果输入的任何元素都会引发错误x为负,从确定x>= 0.

详见: mustBeNonzero,mustBePositive.

 
:mustBe非正数 (x)

要求输入x不是正的。

如果输入的任何元素都会引发错误x为阳性,从确定x<= 0.

详见: mustBeNegative,mustBeNonzero.

 
:mustBeNonsparse (x)

要求输入x不是稀疏的。

如果输入x是稀疏的,从确定issparse(x).

详见: issparse.

 
:mustBeNonzero (x)

要求输入x不是零。

如果输入的任何元素都会引发错误x为零,从确定x== 0.

详见: mustBeNonnegative,mustBePositive.

 
:必须为数字 (x)

要求输入x是数字。

如果输入x不是数字,从确定是数字的(x).

详见: 必须为数字或逻辑,非数字字符.

 
:必须为数字或逻辑 (x)

要求输入x是数字的或逻辑的。

如果输入x不是数字或逻辑,从确定是数字的(x)||不合逻辑(x).

详见: 必须为数字,非数字字符,不合逻辑的.

 
:mustBePositive (x)

要求输入x是积极的。

如果输入的任何元素都会引发错误x不是正的,从确定x> 0.

详见: mustBeNonnegative,mustBeNonzero.

 
:mustBeReal (x)

要求输入x是真实的。

如果输入x不是真实的,从确定以色列(x).

详见: mustBeFinite,mustBeNonNan,以色列.


版权所有 © 2024 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号