Nếu tôi lặp lại một lần băm, sau đó làm lại lần nữa mà không sửa đổi nội dung, các phím có được bảo đảm xuất hiện theo cùng một thứ tự không?Lệnh băm được lưu giữ giữa các lần lặp nếu không được sửa đổi?
Xét nghiệm nhanh cho thấy càng nhiều:
> h = {'a' => 1, 'b' => 2, 'c' => 3}
> 100_000.times.map { h.to_s == h.to_s }.all?
=> true
Một câu hỏi, nếu ở trên được cho phép, tôi có thể lặp qua nó chỉ thay đổi giá trị, mà không cần thêm bất kỳ khóa mới, và có trật tự của các phím được không thay đổi?
tương tự như sau câu hỏi trăn: Do dicts preserve iteration order if they are not modified?
Không giống như trùng lặp đề nghị tôi không quan tâm đến việc liệu các yếu tố có một trật tự quy định đầy đủ, chỉ có những hạn chế mà hai lặp lại liên tục mà không sửa đổi cung cấp cùng một chuỗi.
Vì cả hai câu trả lời đều cho biết, thứ tự chèn được duy trì. Điều này gây nhầm lẫn cho những người nghĩ rằng "sắp xếp" có nghĩa là "sắp xếp", mà họ không trừ khi chúng tôi đang cho phép một dấu thời gian vô hình bên trong lớp Hash. –
Có thể trùng lặp của [Ruby: Thứ tự các khóa/giá trị được trả về bởi phương thức Hash.keys và Hash.values là gì?] (Http://stackoverflow.com/questions/5208512/ruby-what-is-the-order- của-keys-values-return-by-hash-keys-và-hash-values-met) –