在Ruby中用HashWithIndifferentAccess完全替换Hash是不是很糟糕?

the*_*art 1 ruby hash ruby-on-rails activesupport

我发现自己经常遇到错误,我用符号代替字符串访问哈希,反之亦然.我想要做:

require 'active_support/hash_with_indifferent_access'
Hash = HashWithIndifferentAccess
# (irb):xx: warning: already initialized constant Hash
Run Code Online (Sandbox Code Playgroud)

这个警告是因为已经定义了哈希,但我并不在乎.

当然,性能可能稍差.

当然,也许有些宝石会创建一个包含字符串和符号的哈希并且会破坏 - 但这有多常见?

这不好吗?反模式?我会后悔这样做吗?有什么缺点?有这样的好/坏经历吗?

mu *_*ort 8

你认为{}.class在你的kludge之后你会怎么样?对,它会Hash.

你觉得怎么样Hash[:a, 'a']?对,SystemStackError希望有明显的理由.

所以,是的,这是一个坏主意,你会后悔,一个重要的缺点是它实际上并没有你认为它会做什么.

  • 嗯,不要考虑这一切吗?我从来没有真正遇到过符号/字符串问题所以我没有看到太多指向这一点.当你在Ruby中编程时,用Ruby编程,而不是像Ruby一样. (2认同)