首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >散列数组直接将数据重写为数组。

散列数组直接将数据重写为数组。
EN

Stack Overflow用户
提问于 2017-01-22 13:54:20
回答 2查看 51关注 0票数 0

我想做一串哈希。但是问题是在第一次迭代之后,当代码转到下一行时,它将直接替换数组的内容。

代码语言:javascript
运行
复制
@item_name =[]
item = {}
@invoiceinfo.each do |invoice|
  item[:name] =  Invoiceinfo.find(@invoiceinfo.id).item.name
  item[:desc] =  Invoiceinfo.find(@invoiceinfo.id).desc
  item[:unit_price] =  Invoiceinfo.find(@invoiceinfo.id).unit_price
  byebug
  @item_name.push (item)
end

这就是我在第一次迭代之后得到的,假设我有以下数据

代码语言:javascript
运行
复制
@item_name = [{:name=>"usman", :desc=>"sample ", :unit_price=>100}]

执行下一行后,它将在执行@item_name(名称变量)后立即直接更改@item_name的内容。

@item_name = {:name=>"next_name",:desc=>"sample ",:unit_price=>100}

任何帮助都将不胜感激。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-22 13:58:00

试试像这样的东西

代码语言:javascript
运行
复制
@item_name = []
@invoiceinfo.each do |invoice|
  invoice_info = Invoiceinfo.find(@invoiceinfo.id)

  item = {}
  item[:name] =  invoice_info.item.name
  item[:desc] =  invoice_info.desc
  item[:unit_price] = invoice_info.unit_price

  @item_name.push(item)
end
票数 4
EN

Stack Overflow用户

发布于 2017-01-22 14:20:38

如果您考虑在ruby代码中使用ruby范例和最佳实践,这个错误在将来不会发生。

代码语言:javascript
运行
复制
@item_name = @invoiceinfo.each_with_object([]) do |invoice, acc|
  invoice_info = Invoiceinfo.find(@invoiceinfo.id)

  acc.push(
    name: invoice_info.item.name,
    desc: invoice_info.desc
    unit_price: invoice_info.unit_price
  )
end
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41791726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档