Câu hỏi phỏng vấn Ruby on Rails
Câu hỏi

So sánh HashWithIndifferentAccess của ActiveSupport's và Ruby?

Câu trả lời

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:

  1. 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ụ:

    ruby Copy
    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
  2. 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ụ:

    ruby Copy
    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

middle

Gợi ý câu hỏi phỏng vấn

senior

Bạn hiểu thế nào về quy tắc đặt tên trong Rails?

middle

Sự khác biệt giữa symbolstring là gì?

middle

Proc là gì?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào