OCaml!=的意外结果

时间:2010-06-16 16:20:04

标签: ocaml equality

据我所知,=和!=应该用于OCaml中的字符串。我看到了奇怪的结果,但我想更好地理解。

当我用两个字符串比较=时,我得到了我期望的结果:

# "steve" = "steve";;
- : bool = true
# "steve" = "rowe";;
- : bool = false

但是当我尝试的时候!=我没有:

# "steve" != "rowe";;
- : bool = true
# "steve" != "steve";; (* unexpected - shouldn't this be false? *)
- : bool = true

有人可以解释一下吗?有更好的方法吗?

1 个答案:

答案 0 :(得分:19)

!=不是=的否定。 <>是您应该使用=的否定:

# "steve" <> "rowe" ;;
- : bool = true
# "steve" <> "steve" ;;
- : bool = false
# 

!===的否定,如果你是OCaml初学者,你不应该使用这两个中的任何一个。它们可能有点棘手,而且它们被正式指定(唯一的保证是,如果两个值为==,它们是=)。