11.6可变长度参数列表

有时,在定义函数时,输入参数的数量是未知的。举个例子,想象一个函数,它返回所有输入参数的smallesto。例如

a=最小(1,2,3);b=最小(1,2,3,4);

在这个例子中ab将是1。编写的一种方法最小的函数为

函数val=最小(arg1、arg2、arg3、arg4、arg5)</body>结束函数

然后使用的值函数输入变量数以确定应考虑哪些inputarguments。这种方法的问题在于它只能处理有限数量的输入参数。

如果特殊参数名称变精蛋白出现在函数参数列表的末尾,表示该函数采用可变数量的输入参数。使用变精蛋白函数看起来是这样的

函数val=最小(varargin)</body>结束函数

在函数体中,可以通过变量访问输入参数变精蛋白。此变量是包含所有输入参数的元胞数组。详见元胞数组,了解有关使用元胞数组的详细信息。这个最小的函数现在可以这样定义

函数val=最小(varargin)val=最小([varargin{:}]);结束函数

这个实现可以处理任意数量的输入参数,但它也是一个非常简单的问题解决方案。

稍微复杂一点的例子变精蛋白是一个函数打印参数打印所有输入参数。这样的函数可以这样定义

i=1的函数print_arguments(varargin):长度(vararggin)printf(“输入参数%d:”,i);disp(varargin{i});endforend函数

此函数返回如下输出

print_arguments(1,“两个”,3);-|输入参数1:1-|输入参数2:两个-|输入参数3:3
 
:[规则,道具] = sparseparams (params)
:[规则,var1, …] = sparseparams (params,名称1,default1, …)

返回规则的元胞元素param直到第一个字符串元素,并且在道具从第一个字符串元素开始的所有剩余元素。

例如

〔reg,prop〕=sparseparams({1,2,“线宽”,10})reg={[1,1]=1[1,2]=2}prop={[1,1]=线宽[1,2]=10}

sparseparams函数可用于将常规数值参数与作为的属性/值对提供的附加参数分开变精蛋白元胞数组。

在调用的第二种形式中,直接指定可用参数,并将其默认值作为名称-值对。如果params不要形成名称-值对,或者如果出现与任何可用参数都不匹配的参数,则会发生错误。

从m文件函数调用时,错误的前缀是调用方函数的名称。

参数的匹配不区分大小写。

详见: 变精蛋白,inputsparser.


版权所有 © 2024 Octave中文网

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