【发布时间】:2026-02-04 13:30:01
【问题描述】:
我发现自己经常遇到错误,我使用符号而不是字符串访问哈希,反之亦然。我想做:
require 'active_support/hash_with_indifferent_access'
Hash = HashWithIndifferentAccess
# (irb):xx: warning: already initialized constant Hash
这个警告是因为已经定义了 Hash,但我并不在意。
当然,性能可能会稍差。
当然,也许某些 gem 创建了一个带有字符串和符号的散列并且会中断——但这有多常见?
这很糟糕吗?反模式?我会后悔这样做吗?有什么缺点?这样做有什么好的/坏的经验吗?
【问题讨论】:
-
你为什么首先尝试使用字符串访问哈希?符号是明显的赢家。
-
@ArslanAli 在旧版本的 Ruby 中,符号不会被垃圾收集。使用 JSON 解码或类似的方法时,很容易用大量符号污染符号表,而您无法控制定义了多少符号。
-
你想阅读别人的代码吗?这相当于添加
alias :kat :cat,因为不会拼写。
标签: ruby-on-rails ruby hash activesupport