Manipulação de Argumento Expansivo

CoffeeScript fornece uma excelente sintaxe para lidar com uma ampla gama de cenários para argumentos de função esperados. Aqui estão alguns exemplos de alguns (alguns mais conhecidos do que outros).

Splats: permite mais controle dos argumentos de uma função quando uma quantidade incerta de parâmetros pode ser passada:

(first, others..., last) ->

Os argumentos firste lastserão armazenados nas respectivas variáveis, e todos os argumentos entre esses dois serão armazenados como uma matriz na othervariável.

Splats são abordados na documentação do CS, mas menos conhecidos são os argumentos de função de manipulação de diferentes tipos de objetos. As funções abaixo são todas CS válidas:

Matrizes:

([firstElement, secondElement]) ->

Resulta em:

(function(_arg) {
var firstElement, secondElement;
firstElement
= _arg[0], secondElement = _arg[1];
});

Objetos:

({firstKey, secondKey}) ->

Resulta em:

(function(_arg) {
var firstKey, secondKey;
firstKey
= _arg.firstKey, secondKey = _arg.secondKey;
});

Variáveis ​​de instância:

(@firstObjectVariable, @secondObjectVariable) ->

Resulta em:

(function(firstObjectVariable, secondObjectVariable) {
this.firstObjectVariable = firstObjectVariable;
this.secondObjectVariable = secondObjectVariable;
});