在学习Ruby时,我遇到了“=>”有时候是经营者。通常我会以
的形式看到它:symbol => value
并且似乎在将值传递给函数时经常使用。该运营商究竟叫什么?它是什么意思/是什么意思?它是内置到Ruby中还是像Rails和DataMapper这样的不同框架添加到符号类中的东西?它只与符号类一起使用吗?感谢。
答案 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中的一种惯例,可以使生活更轻松。