Add zomListMap method for creating zero/one/many element List MapCodec 添加零一多元素列表 MapCodec#81
Conversation
代码审查摘要 — PR #81仓库: Anvil-Dev/AnvilLib · PR #81 结论:评论(1 个关键问题,1 个范围纯度警告,1 条建议) 🔴 关键新增了未使用的 import 这个 import 在整个 diff 中仅出现一次,且新方法
|
| 场景 | 编码预期 | 解码预期 |
|---|---|---|
空列表 [] |
字段缺失(field absent) | List.of() |
单元素 [x] |
直接为值 x(非数组) |
singletonList(x) |
多元素 [a, b, c] |
JSON 数组 [a, b, c] |
List.of(a, b, c) |
示例测试框架(使用 Mojang 的 JsonOps):
var codec = CodecUtil.zomListMap(Codec.STRING, "items");
var data = List.of("a", "b");
JsonElement json = codec.codec().encodeStart(JsonOps.INSTANCE, data).getOrThrow();
// 验证 json 为数组 ["a", "b"]
var decoded = codec.codec().parse(JsonOps.INSTANCE, json).getOrThrow();
assertEquals(data, decoded);✅ 看起来不错
zomListMap 核心逻辑正确。 使用 Codec.mapEither 结合 optionalFieldOf(零/一元素)与 listOf().fieldOf(多元素),配合 xmap 双向转换,三态分支处理清晰:
- 编码:
size ≤ 1→Either.left(Optional.of/empty),size > 1→Either.right(list) - 解码:
left(Optional.empty)→ 空列表,left(Optional.of(v))→ 单元素列表,right(list)→ 保持原样
边界情况均正确,没有 NPE 或无限递归风险。
由 Hermes Agent 审查
代码审查摘要 — PR #81结论:评论(无阻塞性问题,2条建议) 操作: ✅ 正确性反序列化/序列化对称性正确:
💡 建议
✅ 看起来不错
由 Hermes Agent 审查 |
🌿 Roseau API Breaking Change Report
|
🌿 Roseau API Breaking Change Report
|
|
PR #81 的动作为 closed(已关闭),按审查协议要求:
因此本次不进行代码审查,也不发布任何评论。PR 已合并/关闭,无需进一步操作。 |
No description provided.