我对 let
在 F# 中的模式匹配如何工作感到困惑。我正在使用 Visual Studio 的“F# 交互”窗口,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。为什么?
最佳答案
你需要在你的模式周围加上括号:
let (Point(x, y)) = Point(1, 2) in x ;;
否则无法将模式与函数绑定(bind)区分开来......
关于.net - F# 模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2295605/