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

时间:2011-01-11 21:56:00

标签: ruby-on-rails ruby operators symbols hashrocket

在学习Ruby时,我遇到了“=>”有时候是经营者。通常我会以

的形式看到它
:symbol => value

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

5 个答案:

答案 0 :(得分:48)

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

hashmap文字的格式为{key1 => value1, key2 => value2, ...},但当用作函数的最后一个参数时,可以省略大括号。因此,当您看到像f(:a => 1, :b => 2)这样的函数调用时,使用一个参数调用f,这是一个具有键:a:b以及值{{1 }和1

答案 1 :(得分: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-syntax

答案 2 :(得分:5)

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

{
  a: "A",
  b: "B"
}

答案 3 :(得分:4)

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

或者您可以使用SymbolHound

答案 4 :(得分:0)

除了In Ruby what does "=>" mean and how does it work?

您通常会看到=>来定义函数的参数。可以认为这是一个很好的方便:你不需要记住参数的正确顺序,因为所有参数都包含在一个巨大的哈希中。所以,如果你有一个简单的帮助方法,如

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中的一种惯例,可以使生活更轻松。