ruby 数组中的元素是hash,改变一个元素的hash值,为什么所有元素的hash都会改变

Python010

ruby 数组中的元素是hash,改变一个元素的hash值,为什么所有元素的hash都会改变,第1张

完全没有明白你的意思。

a = []

a << {"one" => 1}

a << {"two" => 2}  # [{"one"=>1}, {"two"=>2}]

a[1]["two"] = 3    # [{"one"=>1}, {"two"=>3}]

如上,改变了第二个元素的值,第一个元素并没有变。

一。给Hash添加默认值 :

h = {1,2,3,4} #=>{1 =>2, 3 =>4}

h.default = 7

h[1]#=> 2

h[3]#=> 4

h[4]#=> 7

h[5]#=> 7

二。给Hash添加key-value对:

h = {} #=>{}

h.store("a",1) #=>1

h["a"] #=>1

h.fetch("a")#=>1

h["b"] = 2 #=>2

h["b"] #=>2

p h#=>{"a"=>1, "b"=>2}

三。清除Hash的key-value对:

h = {:a =>1, :b =>2}

删除全部的k-v对,有两种方法

给hash赋空值

用clear方法 (这种方法更快一点)