说从{
这样的地方调用了myFunction
...
myFunction (b);
...
现在,在myFunction
的定义中,我可以在调用中获取变量的名称吗?
function myFunction (a)
...
inputVble = whoscalling; % this will result in "b"
...
如果 b 是全局变量,可以这样做吗?
注意:这与其他一些问题不同,您想知道输入参数的名称,即 a 。
答案 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