-1

我正在尝试创建一个已注册事件的成员数组,而不是创建一个包含多个散列的数组,代码只存储要注册到散列中的最后一个成员。我似乎无法弄清楚为什么。

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
4

2 回答 2

1

就在这里:

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

每次迭代时都会重新分配哈希。

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

event[:member_name] => {...}
于 2013-10-15T18:53:35.560 回答
0

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

于 2013-10-15T20:34:20.040 回答