新手问题 Ruby 中 hash key 的问题, symbol key, string key

fangxing204 · 2017年05月04日 · 最后由 fangxing204 回复于 2017年05月04日 · 1255 次阅读

在ruby中Hash即可以用symbol key也可以用string key。 作为一个新手,在不知道之前,真的很苦恼,踩过的坑有: sidekiq中通常用string key, 还有调用外部api返回json结果时也只能用string key。 我知道有个方法可以把string key转成symbol key,但是觉得的这么做不爽。 有没有方法,让Hash把symbol key和string key 当成一样的呢?

共收到 4 条回复

如果是在rails中可以用: with_indifferent_access

3楼 已删除

参考 https://github.com/jeremyevans/rack-indifferent/blob/master/lib/rack/indifferent.rb

INDIFFERENT_PROC = lambda{|h,k| h[k.to_s] if k.is_a?(Symbol)}
Hash.new(&INDIFFERENT_PROC)

多谢分享

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册