OCaml函数比较数字

时间:2018-01-28 14:28:25

标签: ocaml

我正在尝试编写一个需要3个数字的函数,x y z。如果x等于y,那么它应该返回z。否则,返回x。我无法弄清楚为什么我的尝试总是返回z,即使x!= y。任何帮助将不胜感激我仍然是OCaml的新手。

    let test x y z =
      match x with
      | y when x = y -> z
      | _ -> x

1 个答案:

答案 0 :(得分:8)

您的代码没有将xy进行比较,它使用模式y来匹配x。这总是成功并将y绑定到x的值。也就是说,您要创建一个与y具有相同值的新本地变量x

要修复代码,您可以这样做:

let test x y z =
  match x with
  | _ when x = y -> z
  | _ -> x

但是当你可以这样做时,这似乎有点傻:

let test x y z =
  if x = y then z else x