我有一个文件读取流,为我提供了需要在需要返回值的函数中累积的值。
伪代码:
data = [];
process(item){
data.push(item);
data.length > 2 && data.shift();
if data[0] == 'ok'..
return data[1];
else
return something else
}
stream(item){
process(item);
}
现在这将充满副作用和糟糕的做法。 我根本不知道如何将其翻译成 FP...
仅供练习。请。
最佳答案
避免突变,而是返回新状态。 仅基于输入生成输出,而不基于全局/封闭对象(或至少不基于可变封闭对象)。
您的示例可能的 FP-ish 实现:
function process(item, oldData) {
const data = [...oldData];
data.push(item);
data.length > 2 && data.shift();
if(data[0] == 'ok') {
return {
result: data[1],
interimData: data
};
}
else {
return {
result: return something else,
interimData: data
};
}
}
function stream(item, data){
return process(item, data);
}
var data = [];
data = stream(item1 , data).interimData;
data = stream(item2 , data).interimData;
...
const finalResult = stream(item3 , data);
关于javascript - 以函数式编程风格存储值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55749295/