Hi Im having a problem with a project im doing through school. When I try and run my program i get this error message: undefined method `[]' for nil:NilClass (NoMethodError). I executed it through TextMate and it gave me an error and said that the instance variabel @parkin_lots
not initialized?? I thought i ghad done that. Please would be grateful if anyone had a clue to my problem. Thanks
require 'guest'
require 'parking_lot'
=begin
=end
class Camping
attr_accessor :current_guests, :parking_lots, :all_guests
#
# slumpade platser i den 1-baserade listan
def initialize
# de nuvarande gästerna
@current_guests = Array.new(32)
# initiera husvagnsplatserna
@parking_lots = Array.new(32)
32.times do |nr|
@parking_lots[nr] = Parking_Lot.new(nr)
end
end
# samtliga gäster
@all_guests = []
# initiera incheckade gäster
defaultGuests = Array[
Guest.new("Logan", "Tokyo", "5880089", 1, @parking_lots[0]),
Guest.new("Scott", "New York", "29884", 2, @parking_lots[1]),
Guest.new("Luke", "Barcelona", "1456", 3, @parking_lots[2]),
Guest.new("Damian", "Berlin", "5689", 4, @parking_lots[3]),
Guest.new("Hank", "Chicago", "89055", 5, @parking_lots[4]),
]
# lägg in de incheckade gästerna i nuvarande gästerna samt historiken
defaultGuests.each do |guest|
@current_guests[guest.plot.nr] = guest
@all_guests.push(guest)
end
end
# Returnerar en strängrepresentation av gästlistan, dvs to_s från Guest-klassen.
# Om en plats är ledig skrivs texten "Ledig" ut.
def to_s
# skapa en tom sträng som fylls på vidare
list = ""
# loopa från 1 till 32
(1..32).each do |n|
# översätt positionen till 0-baserad array och kolla om det finns
# någon gäst registrerad på positionen, och i så fall lägg till
# texten i list
if (!@current_guests[n-1].nil?)
list += @current_guests[n-1].to_s
else
# annars, lägg till texten "Ledig"
list += n.to_s + ": Ledig\n"
end
end
return list
end
#
# ledig plats (nummer mellan 1-32).
def generateParkingLot
# slumpa ett tal mellan 1 och 32
randomNr = 1+rand(32)
# finns det en gäst på den (0-baserade) positionen?
if (!@current_guests[randomNr-1].nil?)
# isåfall, generera en ny siffra
generateParkingLot
else
# returnera den genererade siffran
return randomNr
end
end