我对传感器的理解和js代码正确吗 我读过的关于传感器的网络文章 Js 传感器:JavaScript@Eric Elliott-Medium中的高效数据处理管道 了解JavaScript@Roman Liutikov媒体中的传感器
一半的人很难理解我对传感器的理解和js代码正确吗 我读过的关于传感器的网络文章 Js 传感器:JavaScript@Eric Elliott-Medium中的高效数据处理管道 了解JavaScript@Roman Liutikov媒体中的传感器,javascript,clojure,functional-programming,Javascript,Clojure,Functional Programming,一半的人很难理解 什么是传感器 更简单的JavaScript转换器 如何使用传感器提高数据转换的效率 Clojure 传感器由Rich Hickey cognitect提供 www.Clojure.org 我阅读了大约2页的Clojure官方教程,理解了基本语法。为了理解传感器示例代码,我参考了内置函数参考 我对以上两篇文章的理解大概是75% 我的问题 我想知道下面的理解/js代码是正确的还是错误的。请帮帮我 关于传感器 compose()返回的值是一个传感器 传感器通过将函数作为参数传
- 什么是传感器
- 更简单的JavaScript转换器
- 如何使用传感器提高数据转换的效率
- 传感器由Rich Hickey cognitect提供
- www.Clojure.org
compose()
返回的值是一个传感器transduce()
执行,此外,(2)传感器通过将数组直接传递给Transducer()
执行“严格使用”;
const map=fn=>arr=>arr.map(fn),
filter=fn=>arr=>arr.filter(fn),
addReducer=arr=>arr.reduce((acc,num)=>acc+num,0),
add1=n=>n+1,
偶数=n=>n%2==0,
合成=(…fns)=>initVal=>fns.reduce((acc,fn)=>fn(acc,initVal),
变速器=(变速器,减速器,arr)=>减速器(变速器(arr));
常数arr=[1,2,3],
传感器=合成(/*称为传感器或变换器*/
映射(add1),//2,3,4
过滤器(偶数),//2,4
);
console.log(传感器(arr))//2,4
console.log(传感器(传感器、加法器、arr))//6
传感器利用函数组合从算术中抽象出来的事实,即可以返回函数而不是“正常值”:
const comp=f=>g=>x=>f(g(x));
常量add=x=>y=>x+y;
常数sqr=x=>x*x;
const add9=comp(add)(sqr)(3);//返回一个lambda
console.log(
增补9(6));//15
您的代码与传感器无关。您对filter
和m̀ap
的定义表明,它使用普通的JS过滤器和map
const map = fn => arr => arr.map (fn),
const filter = fn => arr => arr.filter (fn),
const combo = compose(map(add1), filter(even));
combo(arr); ==> [2, 4]
发生的情况是,初始数组通过add1
传递到map
,该数组将生成数组[2,3,4]
,然后通过偶数传递到过滤器
,并创建一个新数组[2,4]
在传感器中也是如此:
const arr=[1,2,3];
常量add1=n=>n+1;
常量偶数=n=>n%2==0;
常量组合=(…fns)=>{
常量[firstFunc,…restFuncs]=fns.reverse();
return(…args)=>restFuncs.reduce((acc,fn)=>fn(acc),firstFunc(…args));
};
常量映射=
fn=>join=>(acc,e)=>join(acc,fn(e));
常量筛选=
isIncluded=>join=>(acc,e)=>isIncluded(e)?加入(acc,e):acc;
常数传感器=合成(映射(add1),滤波(偶数));
常量数组连接=(acc,e)=>([…acc,e]);
const result=arr.reduce(传感器(阵列连接),[]);
控制台日志(结果)代码>compose
错误。当您通过compose(a,b)
时,它会变成b(a(initVal))
,而应该按相反的顺序应用a(b(initVal))
谢谢您的回答。我明白了。compose()是右关联的,pipe()是左辅助的,对吗?是的,您实现了pipe
。相关:谢谢您的回答。我阅读并试图理解你的答案。非常非常感谢。尤其是你的回答中的两句话让我意识到:(1)“传感器利用了函数组合从算术中抽象出来的事实,即可以返回一个函数而不是一个“正常值”。(2)“同样值得注意的是,transduce只是一个方便的函数,理解这个概念并不重要。“谢谢你的回答。哦,我得到了你的前一半答案!现在,试着理解下半部分<代码>加入
是必不可少的,关键部分…(现在继续理解…)非常非常棒!