docs: 关于运行时修改任务的一点解释

This commit is contained in:
zzyyyl
2023-09-29 23:52:39 +08:00
parent ba1a62511b
commit d7971fdf71

View File

@@ -233,6 +233,48 @@ Task.get_raw("B@Loading")->next = { "B#self", "B#next", "B#back" };
以上这种情况, `"C@B" -> next`(即 `C@A#next`)为 `[ "N1" ]` 而不是 `[ "C@N0" ]`.
## 运行时修改任务
- `Task.lazy_parse()` 可以在运行时加载 json 任务配置文件。 lazy_parse 规则与[多文件任务](#多文件任务)相同。
- `Task.set_task_base()` 可以修改任务的 `baseTask` 字段。
### 使用示例
假设有任务配置文件如下:
```json
{
"A": {
"baseTask": "A_default"
},
"A_default": {
"next": [ "xxx" ]
},
"A_mode1": {
"next": [ "yyy" ]
},
"A_mode2": {
"next": [ "zzz" ]
}
}
```
以下代码可以实现根据 mode 的值改变任务 "A",同时会改变其它依赖任务 "A" 的任务,如 "B@A":
```cpp
switch (mode) {
case 1:
Task.set_task_base("A", "A_mode1"); // 基本上相当于用 A_mode1 的内容直接替换 A下同
break;
case 2:
Task.set_task_base("A", "A_mode2");
break;
default:
Task.set_task_base("A", "A_default");
break;
}
```
## 表达式计算
| 符号 | 含义 | 实例 |