web-dev-qa-db-fra.com

En Ruby que signifie "=>" et comment ça marche?

En apprenant Ruby je suis tombé sur l'opérateur "=>" à l'occasion. Habituellement, je le vois sous la forme de

:symbol => value

et il semble à utiliser fréquemment lors du passage de valeurs aux fonctions. Comment s'appelle exactement cet opérateur? Qu'est-ce que cela signifie/signifie? Est-il intégré à Ruby ou est-ce quelque chose que différents frameworks comme Rails et DataMapper ajoutent à la classe de symboles? Est-il uniquement utilisé en conjonction avec la classe de symboles ? Merci.

42
Dustin Martin

=> Sépare les clés des valeurs dans un littéral de hachage. Il n'est pas surchargeable et n'est pas spécifiquement connecté aux symboles.

Un littéral hashmap a la forme {key1 => value1, key2 => value2, ...}, Mais lorsqu'il est utilisé comme dernier paramètre d'une fonction, vous pouvez laisser les accolades. Ainsi, lorsque vous voyez un appel de fonction comme f(:a => 1, :b => 2), f est appelé avec un argument, qui est une table de hachage contenant les clés :a Et :b Et les valeurs 1 et 2.

49
sepp2k

Vous pourriez entendre cet opérateur appelé "fusée de hachage", ce qui signifie que vous l'utilisez lors de la définition d'un hachage Ruby.

Ceci est la documentation Ruby Hash, si vous n'êtes pas familier: http://www.Ruby-doc.org/core/classes/Hash.html

Notez que dans Ruby 1.9, si vous définissez un hachage qui utilise des symboles comme clés, il existe maintenant une syntaxe alternative à votre disposition: http://blog.peepcode.com/tutoriels/2011/rip-Ruby-hash-rocket-syntax

12
jmcnevin

Astuce: si vous l'utilisez dans un hachage comme {:a => "A", :b => "B"}, dans Ruby 1.9, vous pouvez l'utiliser comme un hachage JSON:

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

Si vous souhaitez faire d'autres recherches sur Google, => est parfois appelé un hashrocket, car il ressemble à une fusée (dans le même sens que <=> ressemble à un vaisseau spatial), et il est utilisé dans des hachages.

Ou vous pouvez utiliser SymbolHound .

4
Andrew Grimm

En plus de In Ruby que signifie "=>" et comment ça marche? :

Vous verrez principalement le => pour définir les paramètres d'une fonction. Considérez cela comme une commodité agréable: vous n'avez pas besoin de vous rappeler le bon ordre de vos paramètres, car tous les paramètres sont enveloppés dans un hachage géant. Donc, si vous avez une méthode d'aide simple comme

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

c'est bien mieux que

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

juste parce que vous voulez utiliser un paramètre rarement utilisé. Donc, passer des paramètres avec un hachage n'est qu'une convention dans Ruby/Rails pour vous faciliter la vie.

0
d135-1r43