在Ruby中,"=>"是什么意思,它是如何工作的?

Dus*_*tin 41 ruby symbols ruby-on-rails operators hashrocket

在学习Ruby时我偶尔会遇到"=>"运算符.通常我会以它的形式看到它

:symbol => value
Run Code Online (Sandbox Code Playgroud)

并且在将值传递给函数时似乎经常使用它.该运营商究竟叫什么?它是什么意思/是什么意思?它是内置到Ruby中还是像Rails和DataMapper这样的不同框架添加到符号类中的东西?它只与符号类一起使用吗?谢谢.

sep*_*p2k 49

=>将键与hashmap文字中的值分开.它不是可过载的,也没有专门连接到符号.

hashmap文字具有表单{key1 => value1, key2 => value2, ...},但是当用作函数的最后一个参数时,可以省略大括号.所以,当你看到一个函数调用一样f(:a => 1, :b => 2),f被称为一个参数,它是具有密钥的HashMap中:a:b和值12.


jmc*_*vin 12

您可能会听到此运算符被称为"哈希火箭",这意味着您在定义ruby哈希时会使用它.

如果您不熟悉,这是Ruby Hash文档:http://www.ruby-doc.org/core/classes/Hash.html

请注意,在Ruby 1.9中,如果您正在定义使用符号作为键的哈希,那么现在可以使用另一种语法:http://blog.peepcode.com/tutorials/2011/rip-ruby-hash-rocket-句法


And*_*imm 5

如果你想做任何进一步的谷歌搜索,=>有时被称为 hashrocket,因为它看起来像火箭(在同样的意义上<=>看起来像宇宙飞船),并且它用于哈希。

或者你可以使用SymbolHound


amr*_*rnt 5

提示:如果你{:a => "A", :b => "B"}在Ruby 1.9中使用它,你可以像JSON哈希一样使用它:

{
  a: "A",
  b: "B"
}
Run Code Online (Sandbox Code Playgroud)