Tại sao bạn có thể an toàn sử dụng chuỗi làm khóa hash
, mặc dù chuỗi là có thể thay đổi?
Tại sao bạn có thể an toàn sử dụng chuỗi làm khóa hash
, mặc dù chuỗi là có thể thay đổi?
Trong Ruby, mặc dù chuỗi (strings) là đối tượng có thể thay đổi (mutable), bạn vẫn có thể an toàn sử dụng chúng làm khóa cho hash. Điều này là do khi một chuỗi được sử dụng làm khóa hash, Ruby sẽ sao chép chuỗi đó và "đóng băng" (freeze) sao chép đó để sử dụng làm khóa. Điều này có nghĩa là bản sao của chuỗi không thể bị thay đổi, và do đó nó trở thành một khóa ổn định cho hash
Khi bạn thêm một cặp khóa-giá trị vào hash, Ruby sẽ tính toán giá trị băm (hash value) dựa trên nội dung của chuỗi tại thời điểm đó. Giá trị băm này sau đó được sử dụng để xác định vị trí lưu trữ của cặp khóa-giá trị trong cấu trúc dữ liệu hash. Kể từ khi giá trị băm được tính toán, chuỗi khóa không cần phải giữ nguyên không thay đổi, vì giá trị băm đã được lưu trữ và không phụ thuộc vào chuỗi khóa nữa
Ruby cũng đã tối ưu ...
middle
Gợi ý câu hỏi phỏng vấn
Chưa có bình luận nào