我正在查看http://ruby-doc.org/core-1.9.3/Hash.html,似乎没有
pop
方法?不过我觉得我可能漏掉了什么...if (x = d['a']) != nil
d.delete('a')
end
pop
方法?不过我觉得我可能漏掉了什么...if (x = d['a']) != nil
d.delete('a')
end
h = { "a" => 100, "b" => 200 }
h.delete("a") #=> 100
h.delete("z") #=> nil
h.delete("z") { |el| "#{el} not found" } #=> "z not found"
还有一个 shift 操作,可以删除并返回键值对:
hsh = Hash.new
hsh['bb'] = 42
hsh['aa'] = 23
hsh['cc'] = 65
p hsh.shift
=> ["bb", 42]
如您所见,哈希的顺序是插入顺序而不是键或值的顺序。来自文档
哈希枚举它们的值,按照相应键的插入顺序。
delete
会返回一个值。 - user3467349shift
和first
的行为是怎样的?它只返回它遇到的第一个key-val
对,还是哈希表实际上以某种方式被排序了? - user3467349
pop()
方法,这通常意味着从集合中删除(并返回)最后一个元素。但是,您的示例代码似乎并没有这样做。您具体想要执行什么操作? - Michael Berkowskipop
的功能,而不是 Ruby 中Array#pop
或者典型有序结构中pop()
的功能,后者是弹出栈顶元素。Ruby 中对应 Python 功能的方法名是Hash#delete
。 - Michael Berkowskidelete
方法返回值,这不是很直观。但我想这回答了我的问题。 - user3467349