为什么我不能在 ruby 中更新哈希值?
Why I can't keep the hash updated in ruby?
我需要根据用户的需要使用尽可能多的项目来更新此散列。我在更新它时遇到问题。
它只显示用户的最后输入。
比如i = 2,hash只会显示第二个键和加的值,我两个都想要。或者如果 i = 3 我需要所有三个输入。
puts "how may items to add in hash?"
i=gets.chomp.to_i
for i in 1..i
puts "add key"
key = gets.chomp
puts "add value"
value = gets.chomp.to_f.round(2)
project = Hash.new()
project = {key => value}
project.each do |key, value|
puts "#{key} \t - \t #{value}%"
end
end
有人可以帮忙吗?
只需将您的变量初始化移动到我们的循环中。现在,您在每次迭代时都使用空白哈希重写您的项目。这就是它只存储最后一项的原因。这是您可能的代码:
puts "how may items to add in hash?"
project = {}
i=gets.chomp.to_i
for i in 1..i
puts "add key"
key = gets.chomp
puts "add value"
value = gets.chomp.to_f.round(2)
project[key] = value
end
project.each do |key, value|
puts "#{key} \t - \t #{value}%"
end
project.values.inject(&:+)
PS:比 Hash.new()
更喜欢 {}
(https://github.com/bbatsov/ruby-style-guide#literal-array-hash)
我需要根据用户的需要使用尽可能多的项目来更新此散列。我在更新它时遇到问题。 它只显示用户的最后输入。
比如i = 2,hash只会显示第二个键和加的值,我两个都想要。或者如果 i = 3 我需要所有三个输入。
puts "how may items to add in hash?"
i=gets.chomp.to_i
for i in 1..i
puts "add key"
key = gets.chomp
puts "add value"
value = gets.chomp.to_f.round(2)
project = Hash.new()
project = {key => value}
project.each do |key, value|
puts "#{key} \t - \t #{value}%"
end
end
有人可以帮忙吗?
只需将您的变量初始化移动到我们的循环中。现在,您在每次迭代时都使用空白哈希重写您的项目。这就是它只存储最后一项的原因。这是您可能的代码:
puts "how may items to add in hash?"
project = {}
i=gets.chomp.to_i
for i in 1..i
puts "add key"
key = gets.chomp
puts "add value"
value = gets.chomp.to_f.round(2)
project[key] = value
end
project.each do |key, value|
puts "#{key} \t - \t #{value}%"
end
project.values.inject(&:+)
PS:比 Hash.new()
更喜欢 {}
(https://github.com/bbatsov/ruby-style-guide#literal-array-hash)