50

在学习 Ruby 时,我偶尔会遇到“=>”运算符。通常我以以下形式看到它

:symbol => value

并且在将值传递给函数时似乎经常使用它。那个运算符到底叫什么?它是什么/意味着什么?它是内置在 Ruby 中的,还是像 Rails 和 DataMapper 这样的不同框架添加到符号类中的东西?它只与符号类一起使用吗?谢谢。

4

5 回答 5

57

=>将键与哈希映射文字中的值分开。它不是可重载的,也不是专门连接到符号的。

hashmap 字面量的形式{key1 => value1, key2 => value2, ...}为 ,但当用作函数的最后一个参数时,可以省略花括号。因此,当您看到类似 的函数调用时f(:a => 1, :b => 2)f会使用一个参数调用该参数,该参数是具有键:a:b值的哈希图12

于 2011-01-11T21:57:34.983 回答
13

您可能会听到将此运算符称为“哈希火箭”,这意味着您在定义 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-句法

于 2011-01-11T22:30:03.460 回答
6

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

{
  a: "A",
  b: "B"
}
于 2011-01-11T23:01:04.780 回答
5

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

或者你可以使用SymbolHound

于 2011-01-11T22:31:35.800 回答
-1

除了在 Ruby 中,“=>”是什么意思,它是如何工作的?

您通常会看到=>为函数定义参数。认为这是一个很好的便利:您不需要记住参数的正确顺序,因为所有参数都包装在一个巨大的散列中。因此,如果您有一个简单的辅助方法,例如

link_to "My link", my_path, :confirm => "Are you sure?"

这比

link_to "My link", my_path, null, null, null, null, "Are you sure?"

只是因为你想使用一个很少使用的参数。因此,使用哈希传递参数只是 Ruby/Rails 中的一种约定,以使生活更轻松。

于 2011-01-12T16:12:45.753 回答