Ich bin neu in Ruby und als Teil meiner Studien habe ich eine Aufgabe bekommen, eine CSV-Datei in etwas zu konvertieren, das ich nach Preis und so sortieren kann. Ich habe jedoch Probleme beim Erstellen einer Liste von Objekten. Ich weiß, dass ich object1, object2 und so weiter machen kann, aber ich weiß nicht, wie ich das automatisch machen soll.Ruby: Eine CSV-Liste in separate Objekte umwandeln
Dies ist der Code, den ich bisher habe:
class Product
attr_reader :id, :name, :price, :stock
def initialize(id,name,price,stock)
@id = id
@name=name
@price=price
@stock=stock
end
def readout(variable)
print product.id
print "|"
print product.name
print "|"
print product.price
print "|"
print product.stock
puts ""
end
end
products = []
newproducts= []
File.open("products.csv" , "r") do |f|
f.each_line do |line|
products << line
end
end
puts products
products.each do |product|
data = product.split(",")
inbetween = Product.new(data[0].to_s, data[1].to_s, data[2].to_i, data[3].to_i)
inbetween
newproducts << inbetween
end
newproducts.sort_by{|x| x.price}
newproducts.each do |product|
print product.id
print "|"
print product.name
print "|"
print product.price
print "|"
print product.stock
puts ""
end
Sie sollten sich das FasterCSV-Juwel ansehen. Doing product.split (",") wird nicht mit eingebetteten Kommas umgehen. FasterCSV wird einen breiteren Eingabebereich handhaben. Sonst würde ich dem, was Sie bereits tun, einen sehr ähnlichen Ansatz geben. –
Ich fürchte, meine Schule will, dass wir so etwas schreiben. – Fallion