Matlab函数装饰器(Functional Decorator)

仿照python的装饰器https://www.runoob.com/w3cnote/python-func-decorators.html,本人写了一个matlab的装饰器:

info.m

function  result_func= info(msg)
    function res_func =wrap(func)
        function varargout = inner_wrap(varargin)
            varargout= num2cell(zeros(1,nargout));
            disp(['start ',msg])
            [varargout{:}] = func(varargin{:});
            disp(['end ',msg])
        end
        res_func = @inner_wrap;
    end
    result_func = @wrap;
end

ff.m

function  varargout = ff(varargin)
    disp('run ff');
    for i=1:length(varargin)
        varargout{i} = varargin{i} + 1;
    end
end

执行脚本:

g=info('func');
h=g(@ff);
a=h(1)
[a,b]=h(2,3)
[a,b,c]=h(3,4,5)

运行结果:

不过该函数装饰器有个缺点就是不能覆盖原来的函数,没有像python一样的@语法糖

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值