我正在做一个包含许多不同元素的大型数据分析,因此我大量使用来自文件交换和github的外部工具箱和函数。我目前的工作方法是通过启动时间将它们全部添加到路径中,但我遇到了跨工具箱映射函数名称的问题。我不想手动更改函数名或将它们转换为包,因为a)检查阴影并找到所有函数调用是一项大量的工作,更重要的是b)我经常通过git更新工具箱。由于我不是作者,我所做的所有更改都将丢失。有没有编程的方法来打包工具箱来创建它们自己的命名空间?(开销尽可能小?)谢谢你的帮助
发布于 2016-02-17 21:14:49
你可以做到这一点。基本思想是将所有函数放在一个私有文件夹中,并且只有一个可见的入口点。此入口点是唯一可以看到工具箱的文件,同时,无论搜索路径中的顺序如何,它都会首先看到工具箱函数。
toolbox/exampleToolbox.m
function varargout=exampleToolbox(fcn,varargin)
fcn=str2func(fcn);
varargout=cell(1,nargout);
[varargout{:}]=fcn(varargin{:});
end其中toolbox/exampleToolbox/private/foo.m是一个示例函数。
现在可以通过exampleToolbox('foo',1,2,3)调用foo(1,2,3)了
同样的技术也可以用来生成类。这样你就可以使用exampleToolbox.foo(1,2,3)了
https://stackoverflow.com/questions/35457431
复制相似问题