私は、必要なコンピュータの数を尋ねる Ruby プログラムを作成しています。このプログラムには、コンピュータ、モニタ、および無料アイテムの配列があります。各配列にコストを追加したいと考えています。配列内の各項目に値を追加できれば素晴らしいですが、初心者の私には複雑すぎて理解できないかもしれません。
私がこれまでに持っているもの:
def computer_order()
puts "how many computers with monitors would you like today?"
number = gets.chomp
number = number.to_i
number
end
def monitor_and_computer()
computer_type = ["Dell Inspiron", "HP Pro", "Acer Vero", "Lenovo Ideacentre", "Dell Optiplex", "HP Envy"]
monitor_type = ["Dell 27' Curved", "Viewsonic 22' Flat", "LG 24' Flat", "Samsung 27' Curved", "Spectre 27' Flat", "MSI 31.5' Curved"]
free_item = ["250G Thumb drive", "Declan's Shop T-Shirt", "25$ Steam Gift Card"]
cost = 600
number_of_computers = computer_order()
number_of_computers = number_of_computers.to_i
total = (number_of_computers * cost)
total = total.to_s
number_of_computers.times do
puts "One computer is " + computer_type.sample + ", " + monitor_type.sample + ", " + free_item.sample
end
puts "Your total is: $" + total
end
monitor_and_computer()
まずはこれを試してみると良いと思います。ハッシュを使用して、まず商品の価格と名前の情報をグループ化し、必要なデータを抽出します。
def computer_order
puts "how many computers with monitors would you like today?"
number = gets.chomp
number = number.to_i
number
end
def monitor_and_computer
computer_types = [
{
name: "Dell Inspiron",
price: 100
},
{
name: "HP Pro",
price: 200
},
{
name: "Acer Vero",
price: 300
},
{
name: "Lenovo Ideacentre",
price: 400
},
{
name: "Dell Optiplex",
price: 500
},
{
name: "HP Envy",
price: 600
}
]
monitor_types = [
{
name: "Dell 27' Curved",
price: 200
},
{
name: "Viewsonic 22' Flat",
price: 300
},
{
name: "LG 24' Flat",
price: 400
},
{
name: "Samsung 27' Curved",
price: 500
},
{
name: "Spectre 27' Flat",
price: 600
},
{
name: "MSI 31.5' Curved",
price: 700
}
]
free_items = ["250G Thumb drive", "Declan's Shop T-Shirt", "25$ Steam Gift Card"]
total = 0
number_of_computers = computer_order
number_of_computers.times do
computer = computer_types.sample
monitor = monitor_types.sample
free_item = free_items.sample
total += computer[:price] + monitor[:price]
puts "One computer is #{computer[:name]}, #{monitor[:name]}, #{free_item}"
end
puts "Your total is: $#{total}"
end
monitor_and_computer
これを実装すると、ユーザーはコンピューターの数ではなく、必要なモデル名を入力できるようになります。 find を使用すると、製品の配列内で必要な要素を見つけることができます。たとえば、次のようになります。
computer_types.find { |c| c[:name] == 'HP Pro' }
# => {:name=>"HP Pro", :price=>200}