Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试在ruby中转换此哈希的结构_Ruby - Fatal编程技术网

尝试在ruby中转换此哈希的结构

尝试在ruby中转换此哈希的结构,ruby,Ruby,我有这个杂烩: { :items => { :"cust.category" => "Jackets,Belts & Buttons", :"items.receive_dt" => "2 years", :"prdcts.brand" => "Armani" } } 我正在尝试更改此哈希,使其成为--> 我已经尝试了一些方法,但没有成功有很多不同的方法可以实现这一点,这里有一种方法是使用在散列中添加一个: 您的哈希将如下所示:

我有这个杂烩:

{
  :items => {
    :"cust.category" => "Jackets,Belts & Buttons",
    :"items.receive_dt" => "2 years",
    :"prdcts.brand" => "Armani"
  }
}
我正在尝试更改此哈希,使其成为-->


我已经尝试了一些方法,但没有成功

有很多不同的方法可以实现这一点,这里有一种方法是使用
在散列中添加一个

您的哈希将如下所示:

hash={
:项目=>{
:“客户类别”=>“夹克、皮带和纽扣”,
:“物品。收到”=>“2年”,
:“prdcts.brand”=>“阿玛尼”
}
}
然后,您可以通过将
hash[:items]
转换为一个数组,然后使用
map
将结果转换为连接字符串的单个数组来更改哈希:

hash[:items]=hash[:items].to_a.map{a | a.join('=')}
最后的
散列
将如下所示:

{
:项目=>[
“客户类别=夹克、皮带和纽扣”,
“项目接收时间=2年”,
“prdcts.brand=Armani”
]
}

请参阅。

Ruby 2.7

hash={
:项目=>{
:“客户类别”=>“夹克、皮带和纽扣”,
:“物品。收到”=>“2年”,
:“prdcts.brand”=>“阿玛尼”
}
}
pp hash.to|h{k,v|[k,v.map{e|e.join('=')}]
输出

{:items=>
  ["cust.category=Jackets,Belts & Buttons",
   "items.receive_dt=2 years",
   "prdcts.brand=Armani"]
}

这将创建一个副本,因此值得注意的是使用
transform\u值更改原始结构
。我不知道将
Hash改为#h
,这允许它有一个块。一个细节:come似乎是在v2.6中制作的。@CarySwoveland我相信所有方法都允许有一个块。例如,在Ruby 2.1.10中为
Hash#to_h
提供块时,没有出现错误。为了不“允许”一个块,如果给定一个块,就需要编写代码来引发错误。通常,如果我们不想对块做任何事情,我们就忽略它们。与“不允许”不同。也许“忽略”是一个更好的描述。@vgoff,我好久没听到某人的好话了:
“abc”。upcase{“让我们看看这个块是否有问题”}=>“abc”
“[I]无法正确”不是一个足够精确的错误描述,我们无法帮助您。什么不起作用?它怎么不起作用?你的代码有什么问题?你收到错误信息了吗?错误消息是什么?你得到的结果不是你期望的结果吗?你期望得到什么样的结果?为什么?你会得到什么样的结果?两者有什么不同?你观察到的行为是否不是期望的行为?期望的行为是什么?为什么?观察到的行为是什么?它们有什么不同?
h = {
  :items=>{
     :"cust.category"=>"Jackets,Belts & Buttons",
     :"items.receive_dt"=>"2 years",
     :"prdcts.brand"=>"Armani"
}
h.transform_values { |g| g.map { |a| a.join('=') } }
  #=> {:items=>["cust.category=Jackets,Belts & Buttons",
  #             "items.receive_dt=2 years",
  #             "prdcts.brand=Armani"]
  #   } 
{:items=>
  ["cust.category=Jackets,Belts & Buttons",
   "items.receive_dt=2 years",
   "prdcts.brand=Armani"]
}