ruby Ruby Hash Manipulation

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby Ruby Hash Manipulation相关的知识,希望对你有一定的参考价值。

puts "foo foo bar 123".chomp.split(' ').inject(Hash.new){|h, w| h.update(w => h.fetch(w, 0) + 1)}.map{|h, v| "#{h} #{v}\n"}
#=>
#foo 2
#bar 1
#123 1

#========
p h = Hash.new #=> {}
h['a'] = 1
p h #=> {"a" => 1}
h.delete("a")
p h #=> {}
h = {c: 30}
p h #=> {:c=>30}
#p h.fetch('a')     #=> key not found: "a" (KeyError)
p h.fetch('a', 0)   #=> 0
p h.fetch('a', nil) #=> nil
p h.fetch('c', 0)   #=> 0
p h.fetch(:c, 0)    #=> 30
p h.fetch('c'.to_sym, 0)   #=> 30
p h.update('a' => 10)   #=> {"a"=>10}
p h.update({'b' => 20}) #=> {"a"=>10, "b"=>20}
p h.reject!{|k, v| v < 20} #=> {:c=>30, "b"=>20}

p h.each{|k,v| h.delete(k)} #=> {}

p h.update('zoo' => h.fetch('zoo', 0) + 1) #=> {"zoo"=>1}
p h.update('zoo' => h.fetch('zoo', 0) + 1) #=> {"zoo"=>2}

#========
h = {}
h[Proc.new{|x| x.to_i + 1}] = 10
h.update(Proc.new{|x| x.to_i * 2} => 30)
p h.map{|k, v| k.call v} #=> [11, 60]

以上是关于ruby Ruby Hash Manipulation的主要内容,如果未能解决你的问题,请参考以下文章

ruby Ruby:Llenar un hash con valores por defecto

Ruby 维护 Hash 插入顺序

ruby array

ruby hash

Ruby--hash

Ruby Hash 和 ActiveSupport HashWithIndifferentAccess 的区别