为了简单起见,我在我的应用程序中使用MATLAB脚本作为配置文件。这样我就可以使用函数run
将所有变量加载到工作区中。目前,我每次需要加载配置文件时都会编写下面的代码。
configFile = [APP.PROJECT_DIR '/config/app.m'];
if exist(configFile, 'file') ~= 2
error('Missing configuration file for APP: [PROJECT ROOT DIR]/configFile/app.m')
end
run(configFile);
为了减少行数,我想将上面的代码放在一个独立的函数中。但是,如果我这样做,配置文件中的变量将加载到该函数中而不是加载到调用函数中。我怎样才能将被调用函数的工作空间暴露给调用函数的工作区?
基本上我想要的是run
的功能+检查文件是否存在+如果文件不存在则自定义错误消息。
答案 0 :(得分:2)
一些可能的(相互排斥的)方法:
global
。evalin
。 Not good practice,但是。答案 1 :(得分:1)
您可以将本地工作空间中的数据保存到.mat
文件中,并将mat文件名作为已定义函数的输出返回。然后在调用函数中使用load
函数。下面给出了提示:
load(userConfig(configFile))
在配置功能的定义中:
function output_args = userConfig(input_args)
...
run(input_args)
output_args = [input_args,'at'];
save(output_args)
end
我认为字符串configFile
是input_args
函数的userConfig
。
我只是提供了您可能想要的解决方案,即使我不建议这样做。