加载中...

Option/Maybe 类型是用代数数据类型表达"值可能缺失"的抽象:Haskell 的 Maybe a 取值为 Just a 或 Nothing,Rust 的 Option<T> 为 Some(T) 或 None。可能缺失被编码进类型,使用前必须显式处理缺失分支,编译器负责检查。
传统语言用 null 表示缺失,但类型系统不区分"可能为空"与"必不为空",空指针解引用因此泛滥——null 的引入者 Tony Hoare 称之为"十亿美元的错误"。Option 把这一区分交还类型系统,从根源上消除此类缺陷。
通过模式匹配处理两种情形;更常用的是组合子:map 在值存在时变换、缺失时透传,flatMap/and_then 串联多个可能失败的步骤,避免层层判空。Maybe 构成 Monad,Haskell 中可用 do 语法优雅串联。
该设计已进入主流语言:Java 的 Optional、Swift 的 Optional(语法级支持)、Kotlin 的可空类型、TypeScript 的严格空检查,思路同源。

登录 后参与讨论
暂无讨论,来发表第一条评论吧