Le terme "opérateur splat" vient de Ruby, où le *
caractère (parfois appelé "splat" - voir l'entrée Jargon File ) est utilisé pour indiquer qu'une entrée dans une liste d'arguments doit "absorber" une liste d'arguments.
CoffeeScript a adopté très tôt les splats de style Ruby (voir numéro 16 ), mais à la suggestion de Douglas Crockford, la syntaxe a été modifiée de *x
à x...
quelques semaines plus tard (voir numéro 45 ). Néanmoins, les CoffeeScripters se réfèrent toujours à la syntaxe comme «splat» ou «splat operator».
Quant à ce qu'ils font réellement, les splats découpent l' arguments
objet de telle manière que l'argument splatté devient un tableau de tous les arguments "supplémentaires". L'exemple le plus trivial est
(args...) ->
Dans ce cas, args
sera simplement une copie de tableau de arguments
. Les arguments splattés peuvent être placés avant, après ou entre les arguments standard:
(first, rest...) ->
(rest..., last) ->
(first, rest..., last) ->
Dans les deux premiers cas, si la fonction reçoit 0-1 arguments, rest
sera un tableau vide. Dans le dernier cas, la fonction doit recevoir plus de 2 arguments pour rest
être non vide.
Étant donné que JavaScript n'autorise pas plusieurs signatures pour les fonctions portant le même nom (comme le font C et Java), les splats sont un gain de temps considérable pour traiter un nombre variable d'arguments.
arguments
+call
: stackoverflow.com/questions/17380315/…