我希望能够在运行include之前对名称进行包装。在推送时调用它会导致一些奇怪的行为:如果它以国会大厦开头,它会将第二个Jack添加到列表中,但如果第二个Jack是小写的话,则不会添加它。如何在包含检查之前覆盖名称?
$list = []
def hand_out_gift(name)
if $list.include?name
raise "u can't get more than one present!"
else
$list.push(name.downcase)
puts "Here you go #{name} :)"
end
end
hand_out_gift("Jack")
hand_out_gift("Mary")
hand_out_gift("Jill")
hand_out_gift("Jack")
答案 0 :(得分:1)
在功能早期将其缩小:
def hand_out_gift(name)
key = name.downcase
if $list.include? key
raise "u can't get more than one present!"
else
$list.push key
puts "Here you go #{name} :)"
end
end
除此之外:避免使用像这样的全局变量。