计算属性自动检查
This commit is contained in:
+4
-3
@@ -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 group,computed property 的读取 slot 会从 dependency 自动推导;
|
||||
- computed property 不再直接加入 synchronization rule,它的同步语义由 dependency graph 决定。
|
||||
|
||||
## Managed Access 与 Raw Access
|
||||
|
||||
|
||||
Reference in New Issue
Block a user