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?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ề =====.

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?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 :smile:

Tham khảo:

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Derek Nguyen

9 bài viết.
19 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
28 6
Nếu bạn muốn xây dựng một website mà chỉ bao gồm HTML, CSS và Javascript. Bạn có thể xây dựng 1 static web hoàn toàn miễn phí phục vụ cho việc học ...
Derek Nguyen viết 1 năm trước
28 6
White
7 0
Nội dung của bài viết này có thể đã có rất nhiều người đã biết, nhưng mình cũng xin được chia sẽ lại cho những ai chưa biết. Hoàn Cảnh Data cons...
Derek Nguyen viết gần 2 năm trước
7 0
White
7 0
Hello React Native Chắc hẳn các bạn không còn xa lạ với React Native (RN) nên mình sẽ không giới thiệu nó là cái gì nữa mà sẽ bắt tay vào làm một ...
Derek Nguyen viết hơn 1 năm trước
7 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
9 bài viết.
19 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!