在 ruby?? 中,如果我有一個如下所示的 CSV 檔案:
make,model,color,doors
dodge,charger,black,4
ford,focus,blue,5
nissan,350z,black,2
mazda,miata,white,2
honda,civid,brown,4
corvette,stingray,red,2
ford,fiesta,blue,5
bmw,m4,black,2
audi,a5,blue,2
subaru,brz,black,2
lexus,rc,black,2
如果我運行我的代碼并為我的“wanted_attribute”選擇“門”,為我的“價值”(我的 gets.chomp)選擇“2”,它會從 CSV 檔案中輸出所有只有兩扇門的汽車:
make: nissan, model: 350z, color: black, doors: 2
make: mazda, model: miata, color: white, doors: 2
make: corvette, model: stingray, color: red, doors: 2
make: bmw, model: m4, color: black, doors: 2
make: audi, model: a5, color: blue, doors: 2
make: subaru, model: brz, color: black, doors: 2
make: lexus, model: rc, color: black, doors: 2
我如何能夠進一步壓縮它并使其從這組門 2 中更多地壓縮為黑色,例如這應該是最終輸出(僅輸出黑色汽車):
make: nissan, model: 350z, color: black, doors: 2
make: bmw, model: m4, color: black, doors: 2
make: subaru, model: brz, color: black, doors: 2
make: lexus, model: rc, color: black, doors: 2
這是我當前的代碼:
require "csv"
class Car
attr_accessor :make, :model, :color, :doors
def initialize(make, model, color, doors)
@make, @model, @color, @doors = make, model, color, doors
end
def to_s
"make: #{self.make}, model: #{self.model}, color: #{self.color}, doors: #{self.doors}"
end
end
cars = CSV.read("so.csv").map{|car| Car.new(car[0], car[1], car[2], car[3])}
print "Select attribute: "
wanted_attribute = gets.chomp
print "Select value: "
value = gets.chomp
wanted_cars = cars.select{|car| car.instance_variable_get("@#{wanted_attribute}") == value}
puts wanted_cars
請評論代碼
uj5u.com熱心網友回復:
您可以在主邏輯中添加多個條件:
print "選擇顏色屬性:" Wanted_color_attribute = gets.chomp print "選擇顏色:" color = gets.chomp
wanted_cars = cars.select{|car| car.instance_variable_get("@#{wanted_attribute}") == value && car.instance_variable_get("@#{wanted_color_attribute}") == "#{color}"}
希望能幫助到你!
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/513967.html
標籤:红宝石CSV班级
