需要知道如何将对象的属性值从对象数组写入 csv。
例如。
class Item
attr_accessor :name, :weight, :price
end
def Item.create_item(name, weight, price)
a = Item.new
a.name = name
a.weight = weight
a.price = price
return a
end
array_of_items = []
array_of_items << create_item(n1, w1, p1)
array_of_items << create_items(n2,w2,p2)
.....
我需要生成以下所需输出格式的 csv 文件
row0 - 名称、重量、价格
第 1 行 - n1,w1,p1
第 2 行 - n2、w2、p2
等等
上述任何指示都会有所帮助。
编辑:
根据反馈尝试了以下。
class Item
attr_accessor :name, :weight, :price
def initialize(name, weight, price)
@name, @weight, @price = name, weight, price
end
def to_s
[@name, @weight, @price].join(', ')
end
end
itemlist = []
itemlist << Item.new("Rice", 2, 40)
itemlist << Item.new("Wheat", 3, 80)
CSV.open("items.csv", "wb") do |csv|
itemlist.each do |i|
csv << i
end
end
这会引发以下错误 - NoMethodError: undefined method `map' for Rice, 2, 40:Item 。
如果我检查 itemlist.class,那就是 Array;itemlist[0].class 是 Item - 这里没有惊喜。我认为您说上面定义的 to_s 实例方法应该在将内容添加到 CSV 时处理打印问题,但这似乎不起作用。