En utilisant Ruby, je continue à me mêler à:.
Quelqu’un peut-il s’il vous plaît expliquer quand je suis censé l’utiliser avant le nom de la variable, comme :name
, et quand je suis censé l’utiliser après la variable comme name:
😕
Un exemple serait sublime.
Vous êtes les bienvenus pour les deux, tout en créant Hash
:
{:name => "foo"} #or {name: 'foo'} # This is allowed since Ruby 1.9
Mais fondamentalement :name
est un object Symbol
dans Ruby.
De docs
Les hachages permettent une autre forme de syntaxe lorsque vos clés sont toujours des symboles. Au lieu de
options = { :font_size => 10, :font_family => "Arial" }
Vous pourriez l’écrire comme:
options = { font_size: 10, font_family: "Arial" }
Cela n’a absolument rien à voir avec les variables.
:foo
est un littéral Symbol
, tout comme 'foo'
est un littéral Ssortingng
et 42
est un littéral Integer
.
foo:
est utilisé dans trois endroits:
Hash
: { foo: 42 } # the same as { :foo => 42 }
def foo(bar:) end
foo(bar: 42)
:name
est un symbole. name: "Bob"
est une syntaxe spéciale pour définir un Hash avec le symbole :name
une clé et la chaîne "Bob"
comme une valeur, qui serait autrement écrite comme { :name => "Bob" }
.
Vous pouvez l’utiliser après lorsque vous créez un hachage.
Vous l’utilisez avant lorsque vous souhaitez référencer un symbole.
Dans l’exemple d’Arup, {name: 'foo'}
vous créez un symbole et vous l’utilisez comme clé.
Plus tard, si ce hachage est stocké dans une variable baz, vous pouvez référencer la clé créée en tant que symbole:
baz[:name]