据我所知,=和!=应该用于OCaml中的字符串。我看到了奇怪的结果,但我想更好地理解。
当我用两个字符串比较=时,我得到了我期望的结果:
# "steve" = "steve";;
- : bool = true
# "steve" = "rowe";;
- : bool = false
但是当我尝试的时候!=我没有:
# "steve" != "rowe";;
- : bool = true
# "steve" != "steve";; (* unexpected - shouldn't this be false? *)
- : bool = true
有人可以解释一下吗?有更好的方法吗?
答案 0 :(得分:19)
!=
不是=
的否定。 <>
是您应该使用=
的否定:
# "steve" <> "rowe" ;;
- : bool = true
# "steve" <> "steve" ;;
- : bool = false
#
!=
是==
的否定,如果你是OCaml初学者,你不应该使用这两个中的任何一个。它们可能有点棘手,而且它们被正式指定(唯一的保证是,如果两个值为==
,它们是=
)。