我有这个电话簿程序,可以查找所有联系人,删除联系人并添加联系人。我创建了一个名为contactList
的哈希全局变量。但是,该计划未能认识到这一点。我做错了什么?
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
答案 0 :(得分:0)
因为您已定义 类本地变量 contactList
,而您希望拥有 实例变量 强>
删除此行
contactList = hash.new
并添加以下方法:
def contactList
@contactList ||= {}
end
P.S。没有hash.new
这样的东西,你很可能意味着Hash.new
。
P.P.S。通过Ruby命名约定,你的变量/方法名称应该是蛇形的,而不是驼峰式的。
所以它应该是contact_list
。