是否可以确定Scilab中函数的参数个数?
假设我的功能如下:
function T = test(t,x)
T = t*x
endfunction
在这种情况下,我应该输出2作为输出。 更具体地说,我的目标是知道参数的数量,但唯一地使用函数的名称。
function N = NumberArgument(F)
// F is a function
N = ....
endfunction
所以我想要
a = NumberArgument(test)
a = 2
感谢您的回答
答案 0 :(得分:1)
是的,使用argn
您可以确定输入和输入的数量。输出参数
function T = test(t,x)
[lhs,rhs]=argn(0);
disp(rhs);
T = t*x;
endfunction
使用macrovar
,您可以确定函数外部的参数数量
function N = NumberArgument(F)
// F is a function
all_vars = macrovar(F);
in_vars = all_vars(1);
N = size(in_vars, 1);
endfunction
disp(NumberArgument(test))
答案 1 :(得分:0)
<强>短强>
我认为这是不可能的。
<强>长:强>
您希望获得某个功能的type signature。
经过一些研究后,我发现用户定义的函数和一些内置函数(以scilab编码的函数)具有相同的类型:
-->deff('[r] = test(a, b)', 'r=a*b');
-->type(test)
ans =
13.
-->type(plot)
ans =
13.
我认为你无法获得有关函数的更多信息而不是类型。
现在,让我们说你想要情节的签名。
正如您可以看到here有多个签名(请注意,没有参数的plot()
未记录)。
几乎所有的scilab函数都使用argn,并且签名的可能性是有限的......