【问题标题】:How to pass a symbol as an argument in switch instruction?如何在 switch 指令中将符号作为参数传递?
【发布时间】:2016-12-11 13:37:58
【问题描述】:

我仍在学习 matlab,今天只是为了练习,我决定编写一个具有可变数量参数的函数,它将对这些参数执行 +、* 之类的操作。我有问题:

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

    例如:函数(+,a,b,3)

感谢您的帮助。

【问题讨论】:

  • 我不这么认为,但也许如果您提供一个您实际尝试做的示例,我们可以帮助您确定合适的替代方案
  • 您可以传递一个字符,也可以传递一个函数句柄。目前还不清楚您要做什么。

标签: matlab switch-statement arguments parameter-passing


【解决方案1】:

正如@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

【讨论】:

    猜你喜欢
    • 2013-01-19
    • 2015-12-26
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    • 2017-07-17
    相关资源
    最近更新 更多