Utilizzando Underscore.js, posso scrivere quanto segue, che ritorna 42
:Underscore.js: come funzioni personalizzate a catena
_([42, 43]).chain()
.first()
.value()
ho funzione personalizzata, non fa parte della Underscore.js chiamato double()
:
function double(value) { return value * 2; };
Vorrei poter chiamare questa funzione in una catena Underscore, come se fosse parte di Underscore. Vorrei scrivere la seguente, che mi piacerebbe tornare 84
:
_([42, 43]).chain()
.first()
.double()
.value()
Questo non può funzionare poiché sottolineatura non definisce double()
. Potrei usare tap()
come in:
_([42, 43]).chain()
.first()
.tap(double)
.value()
Questo è valido, ma tap
applica la funzione al suo argomento e restituisce l'argomento, non il risultato della funzione. Quindi mi sembra che avrei bisogno di una sorta di tap
che restituisca il risultato della funzione applicata al suo argomento. C'è qualcosa di simile in Underscore.js? Mi manca qualcosa di terribilmente ovvio?
Tieni presente che 'double' è una [* parola riservata in futuro *] (http://bclary.com/2004/11/07/#a-7.5.3) e che le implementazioni possono lanciare un 'Errore Syntax' se è usato come un Identifier. – CMS
Alessandro, hai già capito che ti ho dato l'unica risposta corretta a questa domanda? Ciò che ho esposto non inquina affatto lo spazio dei nomi di sottolineatura. La libreria underscore.js ha anticipato ciò che hai chiesto e incorporato in una funzione esattamente per quello. –
Underscore ora ha sia "tap" (esegue una funzione per modificare ciascun elemento) che "map" (esegue una funzione che restituisce un nuovo elemento). – CMircea