我很困惑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,为什么?