So sánh HashWithIndifferentAccess của ActiveSupport's và Ruby?
So sánh HashWithIndifferentAccess của ActiveSupport's và Ruby?
HashWithIndifferentAccess của ActiveSupport và HashWithIndifferentAccess của Ruby đều là các cấu trúc dữ liệu dùng để lưu trữ các cặp khóa và giá trị. Tuy nhiên, chúng có một số điểm khác biệt quan trọng:
Hash của Ruby: Là một cấu trúc dữ liệu cơ bản của Ruby, nơi mà mỗi cặp khóa và giá trị là duy nhất. Khóa có thể là bất kỳ đối tượng nào, nhưng thường là các chuỗi hoặc ký hiệu (symbols). Trong Hash của Ruby, việc truy cập giá trị phụ thuộc vào loại của khóa. Nếu bạn đặt một giá trị với khóa là một symbol, bạn không thể truy cập giá trị đó bằng cách sử dụng một chuỗi có cùng nội dung, và ngược lại.
Ví dụ:
my_hash = { :key => 'value' }
my_hash[:key] # Trả về 'value'
my_hash['key'] # Trả về nil vì khóa 'key' (chuỗi) không tồn tại
HashWithIndifferentAccess của ActiveSupport: Là một lớp được cung cấp bởi thư viện ActiveSupport trong Ruby on Rails, cho phép truy cập các giá trị trong hash mà không quan tâm đến việc khóa là chuỗi hay symbol. Điều này giúp việc làm việc với hash trở nên linh hoạt hơn, đặc biệt là khi làm việc với các tham số từ HTTP requests, nơi mà các khóa thường được truyền dưới dạng chuỗi.
Ví dụ:
my_hash = ActiveSupport::HashWithIndifferentAccess.new
my_hash[:key] = 'value'
my_hash[:key] # Trả về 'value'
my_hash['key'] # Cũng trả về 'value', mặc dù 'key' là một chuỗi
Sự khác biệt chính giữa hai loại hash này là HashWithIndifferentAccess cho phép truy cập đồng nhất giữa các khóa dưới dạng chuỗi và symbol, trong khi Hash...
middle
Gợi ý câu hỏi phỏng vấn
Chưa có bình luận nào