我正在尝试创建已注册事件的成员数组,但是代码只存储要注册到哈希中的最后一个成员,而不是创建多个哈希的数组。我似乎无法弄明白为什么。
total = 0
def registration
members = []
event = {}
puts "First Name: "; members << gets.chomp
puts "Last Name: "; members << gets.chomp
puts "Date of Birth: "; members << gets.chomp
puts "Number of Events(1-4): "; members << gets.chomp.to_i
total = '%.2f' % [(members[3] * 35.00)]
puts "TOTAL DUE: $#{total}"
event = {
:first_name => members[0],
:last_name => members[1],
:dob => members[2],
:events => members[3],
:paid => total
}
puts "Would you like to register another student?"
answer = gets.chomp.downcase
if answer == "yes"
registration
elsif answer == "no"
puts "Thank you for registering. We look forward to seeing you at the event."
p event
else
puts "Please enter 'yes' or 'no'."
end
end
registration
答案 0 :(得分:1)
这就在这里:
event = {:first_name => members[0],
:last_name => members[1],
:dob => members[2],
:events => members[3],
:paid => total}
每次迭代时,都会重新分配哈希值。
您要做的是将新的键/值对添加到哈希中。由您决定要使用的密钥(可能是成员全名?):
event[:member_name] => {...}
答案 1 :(得分:0)
问题在上面暗示。在您的注释中,您表明您正在尝试“创建一个哈希数组”,但代码中没有任何内容可以将“事件”哈希放入数组中。您只需构建“事件”,然后在每次运行代码时覆盖它。据推测,结果总是返回最后一次注册的哈希值。