如何在开关指令中传递符号作为参数?

时间:2016-12-11 13:37:58

标签: matlab switch-statement arguments parameter-passing

我还在学习matlab,今天只是为了练习我决定编写一个带有可变数量参数的函数,它会对这些参数执行+,*等操作。我有疑问:

  • 有没有办法传递符号作为此函数的参数?

    例如:function(+,a,b,3)

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

正如@beaker已经说过的,你可以传递字符串(字符数组)或函数。可以使用varargin / nargin处理的可变参数个数。见例子。

function [result] = myfunc(op, varargin) 
    if strcmp(class(op), 'function_handle')
        result = op([varargin{:}]);
        return;
    end

    switch(op)
        case '+'
            result = sum([varargin{:}]);

        case '*' 
            result = prod([varargin{:}]);

        otherwise
            error('unexpected input');
    end
end



>> myfunc(@sum, 1, 2, 3, 4)
ans =
    10

>> myfunc('+', 1, 2, 3, 4)
ans =
    10