F#模式匹配

时间:2010-02-19 10:36:23

标签: .net f# pattern-matching

我对F#中let的模式匹配工作方式感到困惑。我正在使用Visual Studio的'F#interactive'窗口,F#版本1.9.7.8。假设我们定义了一个简单的类型:

type Point = Point of int * int ;;

并尝试使用Point模式匹配let的值。

let Point(x, y) = Point(1, 2) in x ;;

error FS0039: The value or constructor 'x' is not defined失败。如何使用与let进行模式匹配?

最奇怪的是:

let Point(x, y) as z = Point(1, 2) in x ;;

按预期返回1。为什么呢?

1 个答案:

答案 0 :(得分:10)

您需要在模式周围添加括号:

let (Point(x, y)) = Point(1, 2) in x ;;

否则,无法区分模式与功能绑定...