Skip to content

Commit 9de51c4

Browse files
committed
docs: synced via GitHub Actions
1 parent 9632943 commit 9de51c4

File tree

2 files changed

+5
-44
lines changed

2 files changed

+5
-44
lines changed

src/dev-guide/orm/eql-collection-filter-aggregate.md

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,8 @@ o.orders[status = 'INVALID'].last() // 返回 null
159159
// 当聚合函数返回null时,比较操作自然返回false
160160
o.orders[status = 'INVALID'].sum(amount) > 1000 // 返回false
161161

162-
// 如果需要显式处理null值,可以使用$nvl函数
163-
o.orders[status = 'COMPLETED'].sum(amount).$nvl(0) > 10000
162+
// 如果需要显式处理null值,可以使用coelesce函数
163+
coelesce(o.orders[status = 'COMPLETED'].sum(amount), 0) > 10000
164164
```
165165

166166
## 4. 与Collection Operator语法的兼容性
@@ -237,17 +237,6 @@ exists (
237237
)
238238
```
239239

240-
#### $nvl 函数转换
241-
```javascript
242-
// EQL: o.orders[status = 'COMPLETED'].sum(amount).$nvl(0) > 10000
243-
244-
// SQL:
245-
coalesce((
246-
select sum(amount) from Order ord
247-
where ord.user_id = o.id and ord.status = 'COMPLETED'
248-
), 0) > 10000
249-
```
250-
251240
### 5.2 优化转换策略
252241

253242
#### Group Join 优化
@@ -328,7 +317,7 @@ and o.orders[status = 'PENDING'].exists()
328317
// 推荐:同时使用过滤和排序
329318
o.orders[status = 'PENDING' and priority = 'HIGH' order by createTime asc].first().assignee = 'currentUser'
330319

331-
// 注意:聚合函数返回null时比较结果为false,通常不需要$nvl
320+
// 注意:聚合函数返回null时比较结果为false,通常不需要coelesce转换
332321
o.orders[status = 'COMPLETED'].sum(amount) > 10000 // 空集合时返回false
333322

334323
// 避免:不必要的复杂表达式
@@ -360,5 +349,4 @@ o.orders[status = 'COMPLETED'].invalidFunc() // 错误:函数 invalidFunc 不
360349
- **布尔表达式**`exists()` 直接作为布尔值使用,无需 `== true`
361350
- **SQL语义一致**:聚合函数在空集合时的行为与SQL标准完全一致
362351
- **空值处理**:聚合函数返回null时,比较操作自然返回false
363-
- **默认值处理**:特殊情况下可使用 `$nvl` 函数提供默认值
364352
- **一致性**:所有操作符遵循统一的语法模式和调用约定

src/theory/kustomize.md

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -83,35 +83,8 @@ delta定制包含一个内置的元编程生成机制,因此可以很容易的
8383
delta定制非常强调可逆性,并积极主动的利用可逆性。其实仔细思考一下就会发现,如果我们可以实现精确的定制,那么必然意味着我们可以精确的定位到领域结构的任何地方,那么也就意味着我们可以取出领域结构任何一处的信息。也就是说,通过领域结构表达的信息是可以被反向抽取出来的。这种可逆性如果能够系统化的被利用,就可能释放出超乎想象的生产力
8484
例如,在满足可逆性的体系中,我们很容易实现同一信息的多种展现形式,可视化设计仅仅是可逆语义的一个简单应用。
8585

86-
87-
88-
89-
90-
91-
92-
93-
94-
95-
96-
97-
98-
99-
100-
101-
102-
103-
104-
105-
106-
107-
108-
109-
110-
111-
112-
113-
114-
86+
可视化界面 = 界面生成器(DSL)
87+
DSL = 数据提取器(可视化界面)
11588

11689
领域模型采用领域特定语言(DSL)来描述,界面生成器可以理解DSL,从中抽取信息将其转换为可视化界面,同时界面生成器提供了对应的逆向信息提取机制,可以从生成的可视化界面中反向提取出DSL模型信息。所谓的可视化设计不过是模型的两种表现形式(representation)之间的可逆转换而已。
11790

0 commit comments

Comments
 (0)