在Ruby中,将散列中的所有键从字符串转换为符号(最快/最干净/最直接)的方法是什么?

这在解析YAML时非常方便.

my_hash = YAML.load_file('yml')

我希望能够使用:

my_hash[:key] 

而不是:

my_hash['key']

推荐答案

In Ruby >= 2.5 (docs) you can use:

my_hash.transform_keys(&:to_sym)

使用旧的Ruby版本?下面是一个单行程序,它将把散列复制到一个新的散列中,并用符号表示键:

my_hash = my_hash.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}

使用Rails,您可以使用:

my_hash.symbolize_keys
my_hash.deep_symbolize_keys 

Ruby相关问答推荐

Ruby将字符串中的反斜杠替换为双反斜杠

如何使用 gsub 删除返回字符串中的/和/i?

如何使用 Ruby 的 optparse 解析没有名称的参数

Sinatra 与 EventMachine WebSockets 一起工作是否成功?

Kernel#gets try 读取文件而不是标准输入

有没有办法通过哈希初始化对象?

什么是 Sinatra/Rack 的非常简单的身份验证方案

从单独的文件中包含一个 Ruby 类

判断 Ruby Gem 的可用性

如何在 VIM 中导航 Ruby 方法?

无法在 OSX Lion 上使用 RVM 安装 Ruby 企业版

从 Ruby 程序中创建 beep声的最简单方法是什么?

理解|| Ruby 中 If 条件中的 OR 运算符

Jekyll - 找不到命令

如何在 Ruby 符号中转义破折号-?

很好地格式化输出到控制台,指定选项卡的数量

在 Ruby 中,获取数组中最大值的索引的最简洁方法是什么?

如何使用 Ruby-Rails 删除文件夹的所有内容?

更好的 ruby​​ markdown 解释器?

def `self.function` 名称是什么意思?