在scala和其他一些语言(Haskell,SML)中,我们可以使用模式匹配,如:
val user: Option[User] = findUser(123)
user match {
case Some(u) => ...
case _ => ...
}
我对模式匹配和类型系统的关系有一些疑问:
更新
感谢@ Eran的回答。
我知道有很多语言不支持模式匹配,比如c / c ++ / java / python / ruby / javascript / lisp(我可以在这个列表中添加&#34; bash&#34;)< / p>
如果我们想添加&#34;模式匹配&#34;对他们来说,理论上可以添加哪些语言?在任何情况下,哪些语言都无法做到?
答案 0 :(得分:6)
我假设你的意思是一般的值的模式匹配。字符串模式匹配(正则表达式)的特殊情况通过几乎任何语言的库函数得到支持。
模式匹配和类型检查策略是独立的语言&#34;功能&#34;。 模式匹配是将值与模式匹配并且成功匹配然后绑定到变量的过程。 如果在编译时或运行时强制执行类型检查,则类型系统是静态的或动态的。
语言可以具有这两种功能的四种组合之一,例如:
切向地,我发现模式匹配实际上可以用作计算的基础非常有趣。你可以搜索Barry Jay的模式演算工作,如果这会激起你的好奇心。