将多个数组附加到ruby中的哈希

时间:2013-10-15 18:43:30

标签: ruby arrays hash append

我正在尝试创建已注册事件的成员数组,但是代码只存储要注册到哈希中的最后一个成员,而不是创建多个哈希的数组。我似乎无法弄明白为什么。

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

2 个答案:

答案 0 :(得分:1)

这就在这里:

event = {:first_name => members[0],
         :last_name => members[1],
         :dob => members[2],
         :events => members[3],
         :paid => total}
每次迭代时,

都会重新分配哈希值。

您要做的是将新的键/值对添加到哈希中。由您决定要使用的密钥(可能是成员全名?):

event[:member_name] => {...}

答案 1 :(得分:0)

问题在上面暗示。在您的注释中,您表明您正在尝试“创建一个哈希数组”,但代码中没有任何内容可以将“事件”哈希放入数组中。您只需构建“事件”,然后在每次运行代码时覆盖它。据推测,结果总是返回最后一次注册的哈希值。