28 lines
686 B
Markdown
28 lines
686 B
Markdown
# Composition Expression
|
|
|
|
composition expression は、複数の値・制約・構造を合成する式である。
|
|
|
|
## `&`
|
|
|
|
`&` は制約を保った合成を行う。
|
|
|
|
```dcdl
|
|
Port = Int & >= 1 & <= 65535;
|
|
Config = MyConfig & { port = 8000; };
|
|
```
|
|
|
|
object 同士では片側だけにある field も保持するため、`&` は方向を持たない。
|
|
左辺が右辺より狭いことを確認し、右辺を field domain として合成したい場合は [`as`](./ascription.md) を使う。
|
|
|
|
## `//`
|
|
|
|
`//` は右辺優先の構造的 patch を行う。
|
|
|
|
```dcdl
|
|
Patched = Base // {
|
|
feature_hoge.enable = false;
|
|
};
|
|
```
|
|
|
|
詳細は [合成演算子](../operators.md) に置く。
|