在使用Ocaml Scala Haskell 编程的时候使用其中的模式匹配功能可以大大简化程序开发,在使用lisp开发的时候也可以引用第三方的宏包来获得模式匹配的能力,可见模式匹配应该是"现代"编程语言的一个基础设施,最近几年JavaScript中关于模式匹配的提案也开始出现
最新提案:
https://github.com/tc39/proposal-pattern-matching
demo:
const getLength = vector => { case (vector) { when { x, y, z } -> return Math.sqrt(x ** 2 + y ** 2 + z ** 2) when { x, y } -> return Math.sqrt(x ** 2 + y ** 2) when [...etc] -> return vector.length } }getLength({x: 1, y: 2, z: 3}) // 3.74165
这个提案和之前的一些提案相比保守了很多,和Ocaml里的模式匹配也有一些差距,而且是带副作用的,不是很符合我个人的口味