Mirando este tutorial de CoffeeScript: http://jashkenas.github.com/coffee-script/
No veo muy bien para qué sirven los Splats. ¿Qué es esta construcción? De donde viene (historicamente)
javascript
coffeescript
interestar
fuente
fuente
arguments
+call
: stackoverflow.com/questions/17380315/…*args
endef foo(*args):
., ...args
se denomina parámetros de descanso y la expansión...args
en una llamada de función / matriz / objeto literal se denomina propagaciónRespuestas:
El término "operador de splat" proviene de Ruby, donde el
*
carácter (a veces llamado "splat", ver la entrada del Archivo de jerga ) se usa para indicar que una entrada en una lista de argumentos debe "absorber" una lista de argumentos.CoffeeScript adoptó símbolos de estilo Ruby desde el principio (ver número 16 ), pero por sugerencia de Douglas Crockford, la sintaxis se cambió de
*x
ax...
un par de semanas más tarde (ver número 45 ). Sin embargo, CoffeeScripters todavía se refiere a la sintaxis como "splat" o "operador de splat".En cuanto a lo que realmente hacen, los símbolos cortan el
arguments
objeto de tal manera que el argumento dividido se convierte en una matriz de todos los argumentos "adicionales". El ejemplo más trivial esEn este caso,
args
será simplemente una copia de matriz dearguments
. Los argumentos salpicados pueden aparecer antes, después o entre los argumentos estándar:En los dos primeros casos, si la función recibe 0-1 argumentos,
rest
será una matriz vacía. En el último caso, la función necesita recibir más de 2 argumentos pararest
no estar vacía.Dado que JavaScript no permite múltiples firmas para funciones con el mismo nombre (como lo hacen C y Java), los símbolos son un gran ahorro de tiempo para tratar con diferentes números de argumentos.
fuente
params
palabra clave C # .console.log('this:',variable,'should be replaced with', another_variable);
si conoce Python,
args...
más o menos similar a*args
, ya que le permite tratar los parámetros de función como una listapor ejemplo:
también funciona en asignaciones:
fuente
Splats es el término para el uso del
...
operador para var-args (funciones que toman un número variable de argumentos).fuente
Creo que es un azúcar sintáctico para el objeto de argumentos de javascript.
La idea puede surgir del operador splat
*
de Ruby .fuente
(x, rest...) ->
,rest
wont containsx
,arguments
does.