Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 散列[";键]=";之间的差异;“价值”;和hash.store(“key”和“value”)_Ruby_Hashmap_Hash - Fatal编程技术网

Ruby 散列[";键]=";之间的差异;“价值”;和hash.store(“key”和“value”)

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" => "

在Ruby中,它们之间的区别是什么

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}