F#模式匹配

3

我很困惑F#中的模式匹配是如何工作的,特别是对于let语句。我使用的是Visual Studio 'F# interactive'窗口,F#版本是1.9.7.8。假设我们定义了一个简单的类型:

type Point = Point of int * int ;;

然后尝试使用 let 来模式匹配 Point 的值。

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

出现错误FS0039:值或构造函数“x”未定义。该如何使用带有let的模式匹配?

最奇怪的事情是:

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

返回预期的1,为什么?

1个回答

10

你需要在模式周围加上括号:

let (Point(x, y)) = Point(1, 2) in x ;;
否则就没有办法区分模式和函数绑定...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接