是否可以知道在Octave函数调用中提供值的变量的名称?

时间:2014-12-28 04:50:55

标签: function octave

说从{

这样的地方调用了myFunction

...
myFunction (b);
...

现在,在myFunction的定义中,我可以在调用中获取变量的名称吗?

function myFunction (a)
  ...
  inputVble = whoscalling;   % this will result in "b"
  ...

如果 b 是全局变量,可以这样做吗?

注意:这与其他一些问题不同,您想知道输入参数的名称,即 a

1 个答案:

答案 0 :(得分:2)

function ret = doit (a, b)
  inputname (1)
  inputname (2)
  ret = a + b;
endfunction

x = 4;
y = 5;
doit (x, y)

返回

ans = x
ans = y
ans =  9

但是我想提一下,在我看来,使功能在某种程度上取决于功能名称是一种糟糕的风格,即使可能也不应该这样做。

编辑:我认为inputname的主要合理用途是在@classes的显示例程中。例如http://hg.savannah.gnu.org/hgweb/octave/file/51a1d1164449/examples/code/%40polynomial/display.m

function display (p)
  ...      
  fprintf ("%s =", inputname (1));

或者在celldisp内:

octave:2> a = {"huhu", pi}
a = 
{
  [1,1] = huhu
  [1,2] =  3.1416
}
octave:3> celldisp (a)
a{1} = 
huhu

a{2} = 
 3.1416