我对 F# 还很陌生,我想用 (match ... with ...) 语法比较两个值
当我尝试像这样比较两个值时,问题就出现了:
let value1 = 19
let isValue1 y =
match y with
| value1 -> y + 1
| _ -> y
我收到警告,永远无法到达代码的“| _ -> y”部分。为什么是这样?
我知道我可以执行以下操作以使函数按照我希望的方式工作:
let value1 = 19
let isValue1 y =
match y with
| _ when y = value1 -> true
| _ -> false
这也有效
let value1 = 19
let isValue1 y =
match y with
| 19 -> true
| _ -> false
我只是好奇为什么我不能这样做,以及 match 是如何工作的。
最佳答案
match 语句中的 value1 被定义为一个新变量,其值设置为 y(作为匹配项)。上面定义的 value1 将被忽略,就像您在 C# 函数中声明一个与类变量同名的局部变量一样。因此,第一个匹配条件将匹配所有内容,而不仅仅是先前定义的 value1 值,因此会出现错误。希望能澄清问题。
关于F# 匹配两个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/480769/