F#中的匹配语句如何工作?

时间:2009-11-26 19:04:10

标签: .net f#

我正忙着经历MS在VS 2010 Beta 2中提供的非常贫穷的演练F#项目,并且遇到了需要一些解释的事情:

let rec SumList xs =
    match xs with
    | []    -> 0
    | y::ys -> y + SumList ys

我认为匹配类似于其他语言中的开关,其中空列表导致0返回值,但第二种情况令我着迷。这是否告诉'runtime | interpretor'将匹配参数计算为 y cons ys ,或者更确切地说'如果参数的形式为 y cons ys ',则重复y和ys?

2 个答案:

答案 0 :(得分:4)

您可以在这里找到讨论

Explaining pattern matching vs switch

有帮助的。我认为很难总结模式匹配的工作原理,但它既是一个控制流结构(一个la开关),也是一个绑定结构。

答案 1 :(得分:1)

模式匹配与switch语句不同:switch对表达式的值进行操作,而match也可以对表达式的结构进行操作。