Sự khác nhau giữa số Hash
của Ruby và số HashWithIndifferentAccess
của ActiveSupport là gì? Cái nào là tốt nhất cho băm năng động?Sự khác biệt giữa HashWithIndifferentAccess và HashWithIndifferentAccess của Ruby của ActiveSupport
Sự khác biệt giữa HashWithIndifferentAccess và HashWithIndifferentAccess của Ruby của ActiveSupport
Trả lời
Dưới đây là ví dụ đơn giản mà sẽ cho bạn thấy sự khác biệt giữa đơn giản ruby băm & một "ActiveSupport :: HashWithIndifferentAccess"
- HashWithIndifferentAccess cho phép chúng ta truy cập vào chìa khóa băm như một biểu tượng hoặc chuỗi
đơn giản của Ruby Hash
$ irb
2.2.1 :001 > hash = {a: 1, b:2}
=> {:a=>1, :b=>2}
2.2.1 :002 > hash[:a]
=> 1
2.2.1 :003 > hash["a"]
=> nil
ActiveSupport :: HashWithIndifferentAccess
2.2.1 :006 > hash = ActiveSupport::HashWithIndifferentAccess.new(a: 1, b:2)
NameError: uninitialized constant ActiveSupport
from (irb):6
from /home/synerzip/.rvm/rubies/ruby-2.2.1/bin/irb:11:in `<main>'
2.2.1 :007 > require 'active_support/core_ext/hash/indifferent_access'
=> true
2.2.1 :008 > hash = ActiveSupport::HashWithIndifferentAccess.new(a: 1, b:2)
=> {"a"=>1, "b"=>2}
2.2.1 :009 > hash[:a]
=> 1
2.2.1 :010 > hash["a"]
=> 1
- lớp HashWithIndifferentAccess được thừa hưởng từ ruby "Hash" & trên hành vi đặc biệt được thêm vào trong đó.
Trong Ruby Hash:
hash[:key]
hash["key"]
là khác nhau. Trong HashWithIndifferentAccess
như tên cho thấy, bạn có thể truy cập vào key
một trong hai cách.
Trích dẫn chính thức documentation này:
Thực hiện một hash nơi phím: foo và "foo" được coi là cùng.
và
Bên trong những biểu tượng được ánh xạ tới chuỗi khi được sử dụng như phím trong toàn bộ giao diện viết (gọi [] =, sáp nhập, vv). Đây mapping thuộc về giao diện công cộng. Ví dụ, đưa ra:
hash = ActiveSupport::HashWithIndifferentAccess.new(a: 1)
Bạn đang đảm bảo rằng chìa khóa được trả về như là một chuỗi:
hash.keys # => ["a"]
Tôi nghĩ trong trường hợp HashWithIndifferentAccess, ký hiệu được ánh xạ tới chuỗi khi được sử dụng làm khóa trong toàn bộ giao diện viết (gọi [] =, hợp nhất, v.v.). Đúng không? –
có. Bên trong những biểu tượng được ánh xạ tới chuỗi khi được sử dụng như là chìa khóa trong toàn bộ giao diện viết (gọi [] =, sáp nhập, vv). Ánh xạ này thuộc về giao diện công khai. – shivam
- 1. Không thể tuần tự hóa dưới dạng ActiveSupport :: HashWithIndifferentAccess nữa
- 2. ActiveSupport :: HashWithIndifferentAccess trên Cập nhật Biểu mẫu Nhúng
- 3. Cột JSON Postgresql dưới dạng HashWithIndifferentAccess
- 4. Sự khác biệt của Ruby giữa gửi và instance_eval?
- 5. Sự khác nhau giữa 1.second.from_now và 1.seconds.from_now trong thư viện ActiveSupport của Ruby?
- 6. Sự khác nhau giữa mattr_accessor và cattr_accessor trong ActiveSupport?
- 7. Sự khác biệt giữa. và #
- 8. Sự khác biệt giữa toán tử điều hướng an toàn Ruby 2.3 '&. và 'thử!' phương thức từ ActiveSupport?
- 9. Ruby - Sự khác biệt giữa: biến và @variable
- 10. Sự khác biệt giữa Ruby 1.9 và Javascript regexp
- 11. Sự khác biệt giữa quét và khớp trên chuỗi Ruby
- 12. Trong Ruby, sự khác biệt giữa String() và #to_s
- 13. Sự khác biệt giữa khối và khối trong Ruby
- 14. Sự khác biệt giữa cách đặt và viết của Ruby là gì?
- 15. Sự khác biệt giữa đá quý 'open-uri' và 'Net: HTTP' của Ruby là gì?
- 16. Sự khác biệt giữa các phương pháp sao chép và sao chép của Ruby là gì?
- 17. Sự khác biệt giữa getUsableSpace và getUnallocatedSpace của lớp FileStore
- 18. Sự khác biệt giữa Nhiều Nếu và Elif của Python
- 19. Sự khác biệt giữa $ * và $ @
- 20. Sự khác biệt giữa @instance_variable và attr_accessor
- 21. Sự khác biệt giữa = và: =
- 22. Sự khác biệt giữa $ (...) và `...`
- 23. Sự khác biệt giữa ". +" Và ". +?"
- 24. Sự khác biệt giữa "**/* /" và "** /"?
- 25. Sự khác biệt giữa $ # và $ {# @}
- 26. Sự khác biệt giữa Proc và Lambda
- 27. Sự khác biệt của ContentType và MimeType
- 28. Sự khác biệt giữa sách của Michael Hartl giữa Rails 3.0 và Rails 3.2
- 29. Nhận sự khác biệt của mảng trong Ruby
- 30. Sự khác biệt giữa sự khác biệt biểu tượng và sự khác biệt tự động?
ví dụ hoàn hảo –