dav*_*ers 21 ruby hash key-value
从Ruby 1.9开始,哈希保留了非常酷的插入顺序.我想知道访问最后一个键值对的最佳方法.
我写了一些代码来做到这一点:
hash.values.last
Run Code Online (Sandbox Code Playgroud)
这很容易理解,但也许可以直接访问最后一个值,而不是通过中介(值数组).是吗?
Dan*_*ayo 22
哈希有一个"第一"方法,但是在数组模式下返回第一对,最后,你可以尝试:
my_hash.to_a.last
Run Code Online (Sandbox Code Playgroud)
这在数组模式中返回最后一对,如"第一种方法"
sja*_*agr 20
我正在使用的另一种选择:
hash[hash.keys.last]
Run Code Online (Sandbox Code Playgroud)
当你想直接将值分配给哈希的最后一个元素时,效果会更好:
2.4.1 :001 > hash = {foo: 'bar'}
=> {:foo=>"bar"}
2.4.1 :002 > hash[hash.keys.last] = 'baz'
=> "baz"
2.4.1 :003 > hash.values.last = 'bar'
NoMethodError: undefined method `last=' for ["baz"]:Array
Did you mean? last
from (irb):3
from /home/schuylr/.rvm/rubies/ruby-2.4.1/bin/irb:11:in `<main>'
Run Code Online (Sandbox Code Playgroud)
Ben*_*Lee 10
什么都没有,没有.但如果你如此倾向,你可以修补一个(当然通常不推荐):
class Hash
def last_value
values.last
end
end
Run Code Online (Sandbox Code Playgroud)
然后:
hash.last_value
Run Code Online (Sandbox Code Playgroud)