在Ruby中,
之间有什么区别hash["key"] = "value"
和
hash.store("key","value")
答案 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”时,值为10list.store("price", 10)
列表,现在将返回,
# => {"item"=>"Milk", "quantity"=>2, "price"=>10}
同样,删除密钥“价格”
list.delete("price")
然后使用
再次添加密钥list["price"] = 10
列表,也会返回,
# => {"item"=>"Milk", "quantity"=>2, "price"=>10}