【发布时间】:2014-04-20 21:55:49
【问题描述】:
在 F# 中是否可以直接针对 let 绑定进行模式匹配?
例如,编译时没有任何警告:
let value =
match arg with
| 1 -> "value1"
| 2 -> "value2"
| _ -> failwith "key not found"
鉴于以下内容针对匹配key2 和_ 的行给出警告“永远不会匹配此规则”:
let key1 = 1
let key2 = 2
let value =
match arg with
| key1 -> "value1"
| key2 -> "value2"
| _ -> failwith "key not found"
这是因为尽管它们是不可变的,但 let 绑定与 C# const 变量不同?
【问题讨论】:
-
arg定义在哪里? -
@xtofl
arg是在函数中本地定义的,但我相信如果是函数参数也是一样的 -
我们可以退后一步,问问你想要达到什么目标吗?乍一看,这似乎不是模式匹配的好方法。
标签: f# pattern-matching immutability guard-clause