11/08/2018, 21:23

Sự khác nhau của == , ===, eql?, equal?

==, ===, eql?, equal? Những cái này đều để so sánh vậy nó khác nhau cái gì nhỉ? Mình sẽ giải thích ở đây, theo cách hiểu của mình không trích dẫn từ nguồn nào hết. Vì vậy nếu có gì không đúng mọi người góp ý cho mình với nha. 1) == Kiểm tra cùng giá trị hay không 2) === Nó cũng ...

==, ===, eql?, equal? Những cái này đều để so sánh vậy nó khác nhau cái gì nhỉ?

Mình sẽ giải thích ở đây, theo cách hiểu của mình không trích dẫn từ nguồn nào hết. Vì vậy nếu có gì không đúng mọi người góp ý cho mình với nha.

1) ==
Kiểm tra cùng giá trị hay không

2) ===
Nó cũng kiểm tra có cùng giá trị hay không nhưng hơn thế nữa nó kiểm tra thử cái cốt lõi bên trong có giống nhau hay không.

3) eql?
Kiểm tra cùng giá trị và cùng kiểu dữ liệu dữ liệu hay không

4) equal?
Kiểm tra cùng giá trị và phải cùng object_id

Nếu phần định nghĩa vừa rồi làm bạn khó hiểu thì hãy theo dõi ví dụ dưới đây của mình:

1      ==  1 # return true
Fixnum ==  1 # return false

1      === 1 # return true
Fixnum === 1 # return true (Khác biệt giữa == và === là ở đây)

a = "a"
b = "a"
c = d = "a"

a.eql?b      # return true các bạn kiểm tra a.class, b.class để biết được kiểu dữ liệu
a.equal?b    # return false các bạn kiểm tra a.object_id, b.object_id để biết object_id
c.equal?d    # return true các bạn kiểm tra c.object_id, d.object_id để biết object_id 

0