hash [“key”] =“value”和hash.store(“key”,“value”)之间的区别

时间:2015-07-22 18:54:03

标签: ruby hashmap hash

在Ruby中,

之间有什么区别
hash["key"] = "value"

hash.store("key","value")

2 个答案:

答案 0 :(得分:5)

为了理解它,我们可以检查ruby源代码。可以找到类hash的源代码{。{3}}。

方法[]=在第here行定义为:

rb_define_method(rb_cHash,"[]=", rb_hash_aset, 2);

方法store在第4017行定义为:

rb_define_method(rb_cHash,"store", rb_hash_aset, 2);

正如您所看到的,它们都指向C函数rb_hash_aset,这意味着方法store只是[]=方法的别名。

答案 1 :(得分:0)

两者之间没有区别。

如果你在irb(交互式红宝石)中同时运行,你将得到相同的结果。

假设您有一个名为hash的哈希,其中包含以下键/值对:

list = { "item" => "Milk", "quantity" => 2 }

当您使用

添加值“price”时,值为10
list.store("price", 10)

列表,现在将返回,

# => {"item"=>"Milk", "quantity"=>2, "price"=>10}

同样,删除密钥“价格”

list.delete("price")

然后使用

再次添加密钥
list["price"] = 10

列表,也会返回,

# => {"item"=>"Milk", "quantity"=>2, "price"=>10}