11.7忽略参数

在形式参数列表中,可以使用伪占位符~而不是一个名字。这表示应忽略相应的参数值,而不是将其存储到任何变量中。

function val = pick2nd (~, arg2)
  val = arg2;
endfunction

的值nargin不受使用此语句的影响。

使用相同的语法也可以忽略返回参数。例如,排序函数返回排序后的值和原始输入的索引向量,这将导致排序后的输出。忽略第二个输出很简单——不要指定多个输出。但是忽略第一个输出,只计算第二个输出,需要使用~占位符。

x = [2, 3, 1];
[s, i] = sort (x)
⇒
s =

   1   2   3

i =

   3   1   2

[~, i] = sort (x)
⇒
i =

   3   1   2

使用时~占位符,逗号——而不是空白——必须用于分隔输出参数。否则,解释器将查看~作为逻辑而非运算符。

[~ i] = sort (x)
parse error:

  invalid left hand side of assignment

函数可以利用被忽略的输出来减少执行的计算次数。要执行此操作,请使用isargout函数来查询是否需要输出参数。例如

function [out1, out2] = long_function (x, y, z)
  if (isargout (1))
    ## Long calculation
    ...
    out1 = result;
  endif
  ...
endfunction
 
: tf = isargout (k)

在函数中,返回一个逻辑值,指示参数是否k将在输出时赋值给一个变量。

如果结果为false,则在函数调用期间通过使用波浪号(~)特殊输出参数忽略了该参数。函数扫描使用isargout以避免对不需要的输出执行不必要的计算。

如果k超出范围1:max (nargout),函数返回alse。k也可以是一个数组,在这种情况下,函数按元素地起作用,并返回一个逻辑数组。如果在函数外部调用,那么isargout返回一个错误。

详见: nargout, varargout, nthargout.

广告

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

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