我正忙着经历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?
答案 0 :(得分:4)
您可以在这里找到讨论
Explaining pattern matching vs switch
有帮助的。我认为很难总结模式匹配的工作原理,但它既是一个控制流结构(一个la开关),也是一个绑定结构。
答案 1 :(得分:1)
模式匹配与switch
语句不同:switch
对表达式的值进行操作,而match
也可以对表达式的结构进行操作。