Вдохновленный this article on curry functions Я пытался связать их и придумал это решение. Я не уверен в микшинге, хотя, поскольку я как-то чувствую, что lodash может иметь такую функцию allready. Если да, то что называется этой функцией?функции цепного карри с lodash
var _ = require('lodash');
var get = _.curry(function(property, object) {return object[property]});
var map = _.curry(function(fn, objects){ return objects.map(fn) });
var json = {
"user": "hughfdjackson",
"posts": [
{ "title": "why curry?", "contents": "..." },
{ "title": "prototypes: the short(est possible) story", "contents": "..." }
]
}
_.mixin({
then:function(input, fn) {return fn(input);}
});
_(json)
.then(get('posts'))
.then(map(get('title')))
.tap(console.log)
Нет, в lodash нет такой функции. Lodash не думает о себе как обертке, которая может быть сопоставлена, но как простые значения. – Bergi
@ Bergi: '_ ([1, 2, 3]; // => {__chain__: false, __wrapped__: [1, 2, 3]} '. Поэтому, если 'console.log' были заменены на' console.log.bind (console) ', это будет просто работать, регистрировать заголовки сообщений и возвращать обертку LoDash. –
@ScottSauyet: Да, это сработает. Я говорю, что нет «родной» альтернативы 'then' – Bergi