哈希表删除功能

3
为什么会出现这个问题:

elements = Hash.new()
elements[100] = "a"
elements[200] = "b"
elements[300] = "c"
elements[400] = "d"

print "Count: ", elements.count(), 

elements.delete(100)

print "Count: ", elements.count(),     

返回 this:

Count: 4
Count: 3

我不知道为什么这个操作只返回值为100,其他的都没有。


你为什么期望它“返回”任何元素呢?这段代码完全合理,但我无法弄清楚你的问题在哪里。 - Nathan Tuggy
我认为删除操作完全删除了100、200、300和400,只返回了3和4。 - ekultek
空哈希通常通过 elements = {} 进行初始化,你可以省略空括号,即只需编写 elements.count - Stefan
1个回答

3

这个结果与预期相符。

您正在打印 elements 哈希的计数,一开始是4,然后使用 elements.delete(100) 删除了一个元素,然后再次打印计数,现在是3。

可以通过以下方法理解 elements 哈希的情况:

elements = Hash.new()
elements[100] = "a"
elements[200] = "b"
elements[300] = "c"
elements[400] = "d"

puts "elements: #{elements.inspect}"
puts "Count: #{elements.count()}"
elements.delete(100)
puts "elements: #{elements.inspect}"
puts "Count: #{elements.count()}"

# > elements: {100=>"a", 200=>"b", 300=>"c", 400=>"d"}
# > Count: 4
# > elements: {200=>"b", 300=>"c", 400=>"d"}
# > Count: 3

哦!!!我明白了!所以它返回第一个哈希,然后返回删除的哈希,我一直以为返回的只有3和4。谢谢! - ekultek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接