如何知道Scilab函数的参数个数

时间:2016-01-30 15:05:57

标签: scilab

是否可以确定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

感谢您的回答

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,并且签名的可能性是有限的......