Tạo băm băm trong Ruby cho phép thuận tiện tìm kiếm hai chiều (hoặc nhiều hơn). Tuy nhiên, khi chèn một phải luôn kiểm tra xem chỉ mục đầu tiên đã tồn tại trong băm hay chưa. Ví dụ:Hashes of Hashes Idiom trong Ruby?
h = Hash.new
h['x'] = Hash.new if not h.key?('x')
h['x']['y'] = value_to_insert
Nó sẽ là thích hợp hơn để làm như sau nơi Hash mới được tạo ra tự động:
h = Hash.new
h['x']['y'] = value_to_insert
Tương tự như vậy, khi nhìn lên một giá trị mà chỉ số đầu tiên không tồn tại, nó sẽ là thích hợp hơn nếu nil được trả về thay vì nhận được một phương pháp không xác định cho lỗi '[]'.
looked_up_value = h['w']['z']
Có thể tạo một lớp trình bao Hash có hành vi này, nhưng có một thành ngữ Ruby hiện có để hoàn thành tác vụ này không?
Có băm của thành ngữ băm mà muốn trả về 0 sau một độ sâu nhất định? (Tôi đếm những thứ và tôi đang sử dụng h [: foo] [: bar] [: baz] + = 1) –