背景:
有三个class, basic cfg, agent_cfg, user_cfg. 其中 user_cfg externs agent_cfg, agent_cfg externs basic_cfg. user_cfg里有自己的变量(不带local)active, agent_cfg里有变量agent_active. basic_cfg里有常规变量,不一一列举。
一个case里定义了这三种cfg的instance,其中user_cfg 是被set进env环境里的,此case里在执行过程中需要重新reorganize cfg,使sequence发出不同的配置的场景。env的agent里有reorganize的task可直接拿来调用,但是task的input使agent_cfg类型的instance。怎么重构这个cfg file呢?
step1: env.agent.sequencer.get_cfg(cfg1);// basic_cfg cfg1
step2: $cast(cfg2,cfg1);//agent_cfg cfg2
step3: 修改cfg2下面的变量的值来适应case需求。 cfg2.wait_cycle=100;
step4:调用agent下面的reconfigure_via_task(cfg2); 来使cfg2的重新配置起到作用。
怎么找回user_cfg里的自己的变量值,并修改呢?(我的理解,reconfig的过程中user_cfg的自己的变量没有被拿到)。如果有问题,还请指出。
step1: cfg3=cfg2;(user_cfg cfg3, 且cfg3被set 进env)
step2:cfg2.wait_cyle=100;
step3: 调用agent下面的reconfigure_via_task(cfg2),来使cfg2的重新配置起到作用,并保持cfg3部分的变量定义不被改变。