2010-05-20 23 views
0

我正在处理一个包含一些客户信息(电子邮件,名称,地址,金额,[shopping_list:item 1,item 2])的csv文件。存储CVS数据以便使用Ruby进一步操作

我想用数据的工作,并产生了一些标签印刷,......以及收集一些额外的信息(总额,总项目1 ...)

我主要关心的是找到适当的结构来存储数据,以便将来操作。现在我已经想到了以下可能性:

  1. 多维数组:非常简单的构建,但相当困难访问一个美丽的红宝石路中的数据。
  2. 哈希:具有电子邮件作为重点,并存储不同的散列信息(一个哈希名,另一个哈希地址,另一个哈希购物清单...)
  3. (获得到CVS数据一个数据库和使用红宝石数据??)

我真的很感谢您的意见和指导!

回答

2

一旦你有多条信息需要组合在一起,是时候考虑从一个通用散列/数组转移到更专业化的东西。一个很好的候选人你所描述的是Ruby的struct module

Customer = Struct.new(:email, :name, :address) # etc. 

bill = Customer.new('[email protected]', 'Bill Foo', '123 Bar St.') 

puts "#{bill.name} lives at #{bill.address} and can be reached at #{bill.email}" 

输出:

Bill Foo lives at 123 Bar St. and can be reached at [email protected]

Struct#new简单地创建了一个具有attr_accessor一类为每个符号传递的嘛,它实际上创建了一个有点多,但对于初学者来说,这就是你需要担心的一切。

一旦你从包装成某种类型的对象的每个行的数据(不管它是一个struct或一类你自己的),然后你可以不用担心如何存储那些对象。

  • 散列将是理想的随机访问由给定键(也许是客户的姓名或其他唯一ID)
  • 一维数组工作正常,以相同的顺序遍历整个集合客户的他们被插入
+0

感谢您的超级快速回复:) 如果我理解正确,我应该做的是:第一次获得每个“行”的CVS在某种结构/类和第二商店所有散列/数组中的Structs以方便操作...是否正确? – jfanals 2010-05-20 22:41:17

+0

@ischnura:是的,你的理解完全正确。 – 2010-05-20 23:04:41

+0

再次感谢您的回答......我按照您的建议构建了代码,并且所有内容都更易于理解。一切都很好! – jfanals 2010-05-23 21:37:36

相关问题