Ich habe dieses Telefonbuch-Programm, das alle Kontakte nachschlägt, einen Kontakt löscht und einen Kontakt hinzufügt. Ich habe eine globale Hash-Variable namens contactList
erstellt. Das Programm erkennt dies jedoch nicht. Was habe ich falsch gemacht?Warum funktioniert mein Hash in Ruby nicht?
class PhoneBook
contactList = hash.new
def Add(newContact = {})
flag = false
if newContact.length < 1
return flag
else
flag = true
newContact.collect do |name, number|
contactList[name] = number
end
return flag
end
end
def delete (targetName)
if !contactList.has_key?(targetName)
return false
else
contactList.delete(targetName)
return true
end
end
def displayContact (targetName)
number = -1
if contactList.has_key?(targetName)
number = contactList(targetName)
puts "Contact name : #{targetName}, Contact Number, #{number}"
else
puts "#{targetName} doesn't exist in the phonebook"
end
end
def displayAllContacts
if !contactList.empty?
contactList.each {|name, number| puts "Contact name: #{name}, contact number #{number}" }
else
puts "You don't have any contact details your phonebook"
end
end
end
Können Sie bitte die Fehlermeldung hinzufügen, die Sie erhalten? IMHO das Problem ist, dass Sie schlechte Syntax für die Erstellung neuer Hash verwenden. Verwenden Sie 'Hash.new' anstelle von' hash.new'. –
Ich glaube, du hattest Recht. Es war eine undefinierte Methode, aber offenbar wurde contactList als lokale Variable deklariert. – Codes316