.net F#模式匹配
我对模式匹配在F#for.net F#模式匹配,.net,f#,pattern-matching,.net,F#,Pattern Matching,我对模式匹配在F#forlet中的工作方式感到困惑。我正在使用Visual Studio的“F#interactive”窗口,F#version 1.9.7.8。假设我们定义一个简单类型: type Point = Point of int * int ;; 并尝试使用let与点的值进行模式匹配 let Point(x, y) = Point(1, 2) in x ;; 失败,错误为FS0039:未定义值或构造函数“x”。如何将模式匹配与let结合使用 最奇怪的是: let Point(x,
let
中的工作方式感到困惑。我正在使用Visual Studio的“F#interactive”窗口,F#version 1.9.7.8。假设我们定义一个简单类型:
type Point = Point of int * int ;;
并尝试使用let
与点的值进行模式匹配
let Point(x, y) = Point(1, 2) in x ;;
失败,错误为FS0039:未定义值或构造函数“x”
。如何将模式匹配与let
结合使用
最奇怪的是:
let Point(x, y) as z = Point(1, 2) in x ;;
按预期返回1。为什么?您需要在模式周围加上括号:
let (Point(x, y)) = Point(1, 2) in x ;;
否则就无法区分模式和函数绑定