Bạn có chắc chắn muốn xóa bài viết này không ?
Bạn có chắc chắn muốn xóa bình luận này không ?
Tìm hiểu về sự khác nhau giữa eql? và equal? trong Ruby
Tìm hiểu về sự khác nhau giữa eql? và equal? trong Ruby
Tiếp nối bài viết Bạn biết gì về toán tử "===" triple equals (case equality operator) trong Ruby?, ở bài viết này mình sẽ giải thích rõ hơn về sự khác nhau giữa
eql?
vàequal?
trong Ruby.
Các bạn có thể đọc lại Bạn biết gì về toán tử "===" triple equals (case equality operator) trong Ruby? để hiểu rõ hơn về ==
và ===
.
Một thực tế là những người mới chân ướt chân ráo bước vào lập trình với Ruby thường nhầm lẫn các phương thức liên quan đến bình đẳng ==
, eql?
và equal?
.
Trong số các phương thức trên thì equal?
được mô tả dễ hiểu nhất về bình đẳng bởi cái tên của nó.
equal?
sẽ trả về kết quả là true
chỉ khi nó (đối tượng bị gọi bởi equal?
) và tham số (đối tượng được gọi bởi equal?
) là cùng một đối tượng (giống nhau hoàn toàn).
Ví dụ:
some_word = "word"
some_other_word = some_word
some_word.equal? some_other_word # true
eql?
sẽ trả về kết quả là true
khi cả hai đối tượng bị gọi bởi eql?
và đối tượng được gọi bởi eql?
có gía trị giống nhau.
Ví dụ:
1 == 1.0 #=> true
1.eql? 1.0 #=> false
"test".eql? "test" #=> true
Tổng kết lại ta có:
a = 'a' # => 'a'
other = a.dup # => 'a'
a == other # => true
a === other # => true
a.eql? other # => true
a.equal? other # => false
a.equal? a # => true
Đó là tất cả! Rất đơn giản và dễ hiểu phải không nào
Tham khảo:



