Copper 语言:Union 与 Option 类型的取舍

Union Types and Option Types

Copper 语言:Union 与 Option 类型的取舍

在探索自研语言 Copper 的过程中,我深入实验了 Union Types 和 Option Types。虽然 Union Types 功能强大,但其带来的编译器复杂性远超预期,尤其是处理嵌套和类型兼容性时的限制。最终,我转向了更精简的 Option Types(即 T|Nothing),通过预留特定值(如指针的 NULL)来实现,既保持了与 C API 的兼容性,又避免了额外的标签开销。文章详细探讨了从显式类型细化(as 算子、or else 结构)到隐式空值检查的演进,分析了 TypeScript 和 Kotlin 式推断在循环和泛型场景下的局限性。尽管 Option Types 引入了新概念,但它让代码意图更清晰,是平衡简洁性与表达力的关键一步。

在理论层面这很完美:如果不先检查值是否为空就不允许解引用指针,否则编译器会报错。

同日更多故事

2026-11-03