Ruby 散列[";键]=";之间的差异;“价值”;和hash.store(“key”和“value”)
在Ruby中,它们之间的区别是什么Ruby 散列[";键]=";之间的差异;“价值”;和hash.store(“key”和“value”),ruby,hashmap,hash,Ruby,Hashmap,Hash,在Ruby中,它们之间的区别是什么 hash["key"] = "value" 及 为了理解它,我们可以检查ruby源代码。可以找到类hash的源代码 方法[]=在第行定义为: 方法存储在第行定义为: 正如您所看到的,它们都指向C函数rb\u hash\u aset,这意味着方法store只是[]=方法的别名。两者之间没有区别 如果在irb(交互式ruby)中同时运行这两个程序,将得到相同的结果 假设您有一个名为列表的散列,其中包含以下键/值对: list = { "item" => "
hash["key"] = "value"
及
为了理解它,我们可以检查ruby源代码。可以找到类
hash
的源代码
方法[]=
在第行定义为:
方法存储
在第行定义为:
正如您所看到的,它们都指向C函数
rb\u hash\u aset
,这意味着方法store
只是[]=
方法的别名。两者之间没有区别
如果在irb(交互式ruby)中同时运行这两个程序,将得到相同的结果
假设您有一个名为列表的散列,其中包含以下键/值对:
list = { "item" => "Milk", "quantity" => 2 }
当您添加键时,使用
list.store("price", 10)
列表,现在将返回
# => {"item"=>"Milk", "quantity"=>2, "price"=>10}
同样,删除键“price”
然后使用
list["price"] = 10
列表,也将返回
# => {"item"=>"Milk", "quantity"=>2, "price"=>10}
在文档中,它们被列为相同的东西。你可以比较Ruby中的方法:
Hash。instance\u method(:store)==Hash。instance\u method(:[]=)#=>true
“它们只是做同一件事的两种不同方式。”–它们不仅仅是别名,它们不是两种不同的方式,它们是相同的方式,只是换了个名字。
# => {"item"=>"Milk", "quantity"=>2, "price"=>10}
list.delete("price")
list["price"] = 10
# => {"item"=>"Milk", "quantity"=>2, "price"=>10}