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

How to know the number of arguments of a Scilab function

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

感谢您的回答

是的,使用 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))

短:

我觉得不可能。

长:

您想获取函数的 type signature

经过一些研究,我发现用户定义的函数和一些内置函数(在 scilab 中编码的函数)具有相同的类型:

-->deff('[r] = test(a, b)', 'r=a*b');
-->type(test)
 ans  =
     13.  
-->type(plot)
 ans  =
     13. 

我认为您无法获得有关函数的更多信息,而不是类型。

现在,假设你想要情节的签名。

正如您所看到的 here 有多个签名(请注意 plot() 没有参数没有记录)。

几乎所有的 scilab 函数都使用 argn 并且签名的可能性是无限的...