You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在EdgeDB中定义特定自定义tuple类型?验证代码可行性

在EdgeDB中定义带约束的自定义Tuple类型

你编写的这段代码完全可行,它正确实现了一个包含两个int16元素的自定义tuple标量类型,并且通过表达式约束满足了你对元素取值范围和顺序的要求:

scalar type container extending tuple<int16, int16> {
  constraint expression on (
      __subject__.0 >= 0
      and __subject__.1 >= 0
      and __subject__.0 < 256
      and __subject__.1 < 256
      and __subject__.0 <= __subject__.1
    )
}

代码合理性说明

  • EdgeDB支持通过scalar type ... extending tuple<元素类型列表>的语法创建自定义tuple类型
  • 使用__subject__引用当前tuple实例,通过索引(__subject__.0、__subject__.1)访问tuple元素是合法的约束写法
  • 你的约束逻辑清晰:确保两个元素都是0-255的非负整数,且第一个元素不大于第二个元素

关于序列化的选择

你偏好tuple类型的理由完全成立:

  • EdgeDB官方TypeScript驱动会将该自定义tuple类型序列化为原生[number, number] tuple
  • 官方Rust驱动会将其序列化为原生(i16, i16) tuple
  • 若定义对象类型,驱动则会生成对应的TypeScript接口或Rust结构体,不符合你想要的序列化格式

内容的提问来源于stack exchange,提问作者Arthur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 16:03:09