我正在尝试将一些用 Matlab 编写的代码变成一个独立的、已编译的 Matlab 应用程序。但是,在遇到一些奇怪的错误之后,我意识到代码大量使用从路径中添加和删除来解决有多个具有相同名称(但结果/计算不同)的函数多次使用的事实。环顾四周,我发现您可以通过在文件夹名称前加上“+”来将文件夹转换为包,然后检查并确保该包中的函数使用name_of_folder.name_of_function
. 这解决了命名空间问题,但它可能会产生大量工作,因为我现在必须检查并为每个函数调用添加正确的包(我最终可能仍不得不复制大量文件)。
然后我看到了这个import
功能,我希望这能节省我一些时间。我想我可以将我想要的包传递给一个或两个特定函数,让这些函数导入包,然后事情就会按照我想要的方式工作——如果这些函数调用的函数属于该导入语句的范围。例如,如果我设置类似
function foo(var1, var2, ..., packagename)
eval(sprintf('import %s.*', packagename));
...
bar1(var1, var2);
...
bar2(var2);
...
那么我希望bar1
并将bar2
使用通过 import 语句导入的包。该文档说条件和函数中的导入语句仅限于该代码块,但我不知道“该代码块”是否仅表示文本,或者“该代码块”是代码和评估的所有内容因此。我有一种感觉是前者,但我想我会问,希望是后者。
那么,导入语句的范围是什么?或者,是否有另一种方法来处理这个问题?