【发布时间】:2020-04-05 16:50:13
【问题描述】:
我在 OCaml 中有以下代码:
let matchElement x y=
match x with
| (y,_) -> true
| _ -> false;;
我收到一个警告,即 case _ 将始终未被使用。
我的意图是,如果 x 匹配第一个元素等于类型 y 的元组,则返回 true,否则返回 false。你知道怎么做吗?
【问题讨论】:
我在 OCaml 中有以下代码:
let matchElement x y=
match x with
| (y,_) -> true
| _ -> false;;
我收到一个警告,即 case _ 将始终未被使用。
我的意图是,如果 x 匹配第一个元素等于类型 y 的元组,则返回 true,否则返回 false。你知道怎么做吗?
【问题讨论】:
y 实际上是与之匹配的新名称,恰好与y 相同。相当于:
let matchElement x y =
match x with
| (z, _) -> true (* A completely unrelated binding *)
| _ -> false;;
您可以看到x 的所有值都与第一个模式匹配。
要做你想做的事,你可以这样写:
let matchElement x y =
match x with
| (y', _) when y' = y -> true
| _ -> false
(* Or equivalently *)
let matchElement (x, _) y = x = y
【讨论】: