.net - F# 模式匹配

标签 .net f# pattern-matching

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

type Point = Point of int * int ;;

并尝试使用 letPoint 的值进行模式匹配。

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/

相关文章:

.net - 使用Orleans,如何实现分布式计算和分布式数据存储?

f# - F#中的字典排序

regex - 在 Notepad++ 中匹配不包含单词的行

c# - 在 C# 中使用数据集的更好方法

c# - C# 3.0 中隐式类型的好处是什么 >+

f# - 寻找健壮的、通用的 op_Dynamic 实现

haskell - Haskell 中的常量和模式匹配

javascript - Javascript 模式中的语法错误

c# - C#中如何根据层级接口(interface)初始化对象

performance - 为什么 List.foldBack 和 List.fold 一样快