ruby - 如何将 Ruby 哈希 "up"中的属性移动一级

标签 ruby

x = {:name => "John", :data => {:physical => {:age => 25, :weight => 150}}}

我希望将数据的子属性向上移动一个级别(但不一定只是简单地展平所有属性)。在这种情况下,我基本上想将 :physical 属性“向上”移动一个级别。

我正在尝试这个

y = x[:data']
y.each{ |key| x[key] = y[key] }

但是我得到...

x = x.except(:data)
 => {:name=>"John", [:physical, {:age=>25, :weight=>150}]=>nil} 

我在找...

 => {:name=>"John", :physical => {:age=>25, :weight=>150}} 

最佳答案

试试这个:

x = x.merge(x.delete(:data))

关于ruby - 如何将 Ruby 哈希 "up"中的属性移动一级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6324937/

相关文章:

ruby - 使用 OptionParser 解析 Ruby 中的多个命令行选项

ruby - 用于在引号之间的特定单词后提取文本的正则表达式

jquery - 使用 'link_to' 和 jQuery 时遇到问题

计算斐波那契数时的 Ruby "FloatDomainError: Infinity"

ruby - Rake 任务排序

ruby-on-rails - Rails 迁移 : tried to change the type of column from string to integer

ruby-on-rails - 如何使用 Ruby on Rails 将 company.address.city 转换为对象

ruby-on-rails - Rails 4,具有多个 ID 的路由

ruby-on-rails - NGINX 和配置文件中的环境变量

ruby - JSON 哈希键操作