Я заметил, что scan
отсутствует в различных библиотеках преобразователей, на которые я смотрел (например, transducers-js). Невозможно ли реализовать или я что-то упускаю?Возможно ли реализовать сканирование в качестве преобразователя
3
A
ответ
1
На самом деле я могу ответить на свой вопрос. Я пытался реализовать его функционально, и я неправильно понял, как используется интерфейс преобразователя. Рассматривая исходный код от преобразователей-js, они обычно сохраняют состояние в объекте, и я могу реализовать scan
таким же образом:
var Scan = function(agg, start, xf){
this.xf = xf;
this.agg = agg;
this.accum = start;
}
Scan.prototype.init = function(){
return this.xf.init();
}
Scan.prototype.result = function(v) {
return this.xf.result(v);
}
Scan.prototype.step = function(result, input) {
this.accum = this.agg(this.accum, input);
return this.xf.step(result, this.accum);
}
var scan = function(agg, start) {
return function (xf) {
return new Scan(agg, start, xf);
}
}