2010-06-16 45 views
16

Từ những gì tôi có thể biết, = và! = Được cho là hoạt động trên chuỗi trong OCaml. Tôi thấy kết quả lạ mặc dù tôi muốn hiểu rõ hơn.Kết quả bất ngờ với OCaml! =

Khi tôi so sánh hai chuỗi với = tôi nhận được kết quả tôi mong đợi:

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

nhưng khi tôi cố gắng = Tôi không:

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

bất cứ ai có thể giải thích? Có cách nào tốt hơn để làm điều này?

Trả lời

19

!= không phải là phủ định của =. <> là sự phủ định của = mà bạn nên sử dụng:

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

!= là sự phủ định của ==, và nếu bạn là một người mới bắt đầu OCaml, bạn không nên sử dụng bất kỳ hai được nêu ra. Chúng có thể hơi phức tạp một chút, và chúng được chính thức xác định (bảo đảm duy nhất là nếu hai giá trị là == chúng là =).

+2

Một câu hỏi trước đây bao gồm một số sự tinh tế. http://stackoverflow.com/questions/1412668/does-have-meaning-in-ocaml – nlucaroni

Các vấn đề liên quan