我想实现一个“package-global config object”,封装配置 parameters ,由一组脚本和函数包共享。
理想情况,我希望能够像这样使用这个对象:
import mypkg.config;
% ...
% config parameters should be settable at run-time
config.start_time = clock();
% ...
% ideally, it should be possible to apply subscript subexpressions, such
% as {:} below, *directly* to config parameters
conn = database(config.connParams{:});
% here, config.connParams is expected to contain a cell array of strings
毋庸置疑,应该保护config
中参数的名称不受包外定义的名称的影响。
配置对象的另一个重要要求是,应该可以在一个文件中完全初始化其所有参数。
我不知道实现上面说明的乌托邦config
的任何简单方法。似乎如果foo.bar
导入了import
,那么bar.baz
只能是函数或类,而不是变量。 (但是,如果我错了,请纠正我!)
我正在寻找使用上述属性逼近config
对象的方法。
BTW,我意识到只读参数( aka “常量”)可以通过“常量函数”进行模拟,但这不是一个可接受的解决方案,因为我需要能够在运行时初始化和/或修改config
中的至少一些参数。