计算属性自动检查

This commit is contained in:
2026-08-11 11:54:09 +08:00
parent 11407faf86
commit e91f134f16
14 changed files with 305 additions and 51 deletions
+4 -3
View File
@@ -186,16 +186,17 @@ struct structive::Type_Descriptor<Device> {
Computed Property 通常自身不可写,但它可能依赖可写字段:
```cpp
computed_property<Device, int>([](const auto& view) {
computed_property<Device, int>(depends_on<&Device::min_speed, &Device::max_speed>, [](const auto& view) {
return view.template get<&Device::max_speed>() - view.template get<&Device::min_speed>();
}, key<"speed_span">)
```
Computed value 本身没有可写存储。它的 synchronized view 保护的是**可写依赖的一致性域**。
- dependency 是 Schema 的显式结构事实,computed view 只能读取已声明的直接依赖;
- read-only 存储依赖可以直接读取,不需要锁;
- writable 依赖如果需要同一快照,应与 computed property 放在同一个 synchronization group
- computed property 的同步语义不是“给只读值创建一个成员锁”,而是描述其依赖一致性边界
- writable 依赖如果需要同一快照,只需要彼此处于同一个 synchronization groupcomputed property 的读取 slot 会从 dependency 自动推导
- computed property 不再直接加入 synchronization rule,它的同步语义由 dependency graph 决定
## Managed Access 与 Raw Access