Связывание функций карри с lodash
Вдохновленный этой статьей о функциях карри, я пытался их связать и придумал это решение. Я не уверен насчет миксина, хотя, так или иначе, я чувствую, что у 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)
1 ответ
В статье Хью Джексона (отлично!) then
функции, вероятно, будут поступать из библиотеки Promise, вероятно, связанной с вызовом AJAX. Так что вам не нужно было бы делать это самостоятельно, если бы вы начинали там. Смешивая это в _
как это кажется странным.
Lo-Dash и Underscore позволят вам сделать это со своими curry
функции. Некоторые новые библиотеки, такие как Ramda и FKit, делают это автоматически. Их версии get
а также map
уже карри, и предназначены для использования таким образом. (Раскрытие: я один из авторов Рамды)