11.5可变长度返回列表

可以使用与特殊语法类似的语法从函数返回可变数量的输出参数varargin参数名称。要让函数返回可变数量的输出参数,请使用特殊的输出参数名称varargout使用。与一样varargin,varargoutisa元胞数组,它将包含指定的输出参数。

例如,下面的函数将第一个输出参数设置为1,将第二个设置为2,依此类推。

function varargout = one_to_n ()
  for i = 1:nargout
    varargout{i} = i;
  endfor
endfunction

当调用此函数时,返回如下值

[a, b, c] = one_to_n ()
     ⇒ a =  1
     ⇒ b =  2
     ⇒ c =  3

如果varargin(varargout)没有作为输入(输出)参数列表的最后一个元素出现,那么它就不是特殊的,处理方式与其他任何参数名称相同。

 
:[r1,r2, …,rn] = deal (a)
:[r1,r2, …,rn] = deal (a1,a2, …,an)

将输入参数复制到相应的输出参数中。

如果只提供一个输入参数,其值将复制到每个输出。

例如

[a, b, c] = deal (x, y, z);

相当于

a = x;
b = y;
c = z;

[a, b, c] = deal (x);

相当于

a = b = c = x;

编程说明:deal通常与从元胞数组或结构体派生的逗号分隔列表一起使用。这是不必要的,因为解释器可以在没有函数调用开销的情况下执行相同的操作。例如

c = {[1 2], "Three", 4};
[x, y, z] = c{:}
⇒
   x =

      1   2

   y = Three
   z =  4

详见: cell2struct,struct2cell,repmat.

广告

版权所有 © 2024-2025 Octave中文网

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