En regardant ce tutoriel CoffeeScript: http://jashkenas.github.com/coffee-script/
Je ne vois pas vraiment à quoi servent les Splats. Quelle est cette construction? D'où vient-il (historiquement)
javascript
coffeescript
interstar
la source
la source
arguments
+call
: stackoverflow.com/questions/17380315/…*args
dansdef foo(*args):
., ...args
est appelée paramètres de repos et l'expansion...args
dans un littéral de fonction appel / tableau / objet est nommée spreadRéponses:
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 estDans ce cas,
args
sera simplement une copie de tableau dearguments
. Les arguments splattés peuvent être placés avant, après ou entre les arguments standard: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 pourrest
ê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.
la source
params
mot clé C # .console.log('this:',variable,'should be replaced with', another_variable);
si vous connaissez python, à
args...
peu près similaire à*args
, car il vous permet de traiter les paramètres de fonction comme une listepar exemple:
cela fonctionne aussi dans les assginments:
la source
Splats est le terme pour l'utilisation de l'
...
opérateur pour var-args (fonctions qui acceptent un nombre variable d'arguments).la source
Je pense que c'est un sucre syntaxique pour l'objet d'arguments de javascript.
L'idée peut venir de l' opérateur splat
*
de ruby .la source
(x, rest...) ->
,rest
wont containx
,arguments
does.