Avez-vous vu une fonction déclarée comme ça ?
Je comprends qu’un seul est l’opérateur de splat. Que signifie
veux dire ?
Avez-vous vu une fonction déclarée comme ça ?
Je comprends qu’un seul est l’opérateur de splat. Que signifie
veux dire ?
C'est le double splat opérateur qui est disponible depuis Ruby 2.0.
Il capture tous les arguments mots-clefs (qui peut aussi être une simple hachage, qui a été le idiomatiques façon d'imiter mot-clé arguments avant de faire partie du langage Ruby)
def my_method(**options)
puts options.inspect
end
my_method(key: "value")
Le code ci-dessus imprime {key:value}
à la console.
Tout comme l'unique splat opérateur saisit tous les arguments, mais au lieu d'un tableau , vous obtenez un hachage.
Exemple réel:
Par exemple dans les Rails de l' cycle
méthode ressemble à ceci:
def cycle(first_value, *values)
options = values.extract_options!
# ...
end
Cette méthode peut être appelée comme ceci: cycle("red", "green", "blue", name: "colors")
.
C'est tout à fait un modèle commun: Vous acceptez une liste d'arguments et la dernière est une des options de hachage, ce qui peut être extrait - par exemple - à l'aide de ActiveSupport de l' extract_options!
.
En Ruby 2.0, vous pouvez simplifier ces méthodes:
def cycle(first_value, *values, **options)
# Same code as above without further changes!
end
Certes c'est seulement une légère amélioration si vous utilisez déjà ActiveSupport mais pour la plaine de Ruby le code des gains de beaucoup de concision.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.