我有一个按工作键入并按薪水排序的人员哈希:
person = Struct.new(:salary)
people = {
:butchers => [
person.new(10),
person.new(6),
person.new(4)
],
:bakers => [
person.new(16),
person.new(8),
person.new(7)
],
:candlestick_makers => [
person.new(25),
person.new(21),
person.new(18)
]
}
我想从各自的数组中删除每个工作的最后 x 个人并做一些事情:
def this_example_method
people.each do |job, people|
people.pop(number_for(job)).each do |person|
#do something
end
end
end
“做某事”可以正常工作,但 pop
删除则不行。运行 this_example_method
后,people
哈希应该如下所示,但目前它没有改变:
people = {
butchers = [
<butcher_1 salary:10>
<butcher_2 salary:6>
],
bakers = [
<baker_1 salary:16>
<baker_2 salary:8>
],
candlestick_makers = [
<candlestick_maker_1 salary:25>
<candlestick_maker_2 salary:21>
]
}
最佳答案
Hash 有一个 shift
方法,该方法返回第一项并将其从哈希中删除。如果顺序很重要,您也许可以尝试在创建哈希时将其反向排序。
关于ruby - 类似于 hash 的 array#pop 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22685718/