尝试在Javascript中复制函数管道时“未定义”

尝试在Javascript中复制函数管道时“未定义”,javascript,functional-programming,undefined,Javascript,Functional Programming,Undefined,我今天刚开始学习函数式编程,我正在尝试使用管道创建一个示例: const pipe=…fns=>x=>fns.reduceacc,f=>facc,x 常量增益=[{power:5,类型:'SPEED'},{power:2,类型:'SPEED'}] 设pos={x:0,y:0} const addToPos=pos=>amount=>{…pos,x:pos.x+amount} 常量add1ToPos=pos=>addToPospos1 常量add2ToPos=pos=>addToPospos2 c

我今天刚开始学习函数式编程,我正在尝试使用管道创建一个示例:

const pipe=…fns=>x=>fns.reduceacc,f=>facc,x 常量增益=[{power:5,类型:'SPEED'},{power:2,类型:'SPEED'}] 设pos={x:0,y:0} const addToPos=pos=>amount=>{…pos,x:pos.x+amount} 常量add1ToPos=pos=>addToPospos1 常量add2ToPos=pos=>addToPospos2 const addAll=pos=>管道 添加1个选项, add2ToPos, 销售时点情报系统 pos=addAllpos console.logpos//按预期返回{x:3,y:0} 然而,当我尝试在我的烟斗中添加所有这些来自buff的异能时,就像这样:

const addAll=pos=>管道 添加1个选项, add2ToPos, addToPosbuffs.reducea,b=>a+b.power,0 销售时点情报系统 我明白了

{x:未定义的[object]} 我真的不知道为什么会发生这种情况,因为它工作得很好:

常量数值=[{num:4,颜色:'blue'},{num:5,颜色:'red'}] 设总数=0 const addToTotal=total=>amount=>total+amount 常量add1total=total=>addtotaltotal1 const addAll=total=>管道 加1总, addtotalnumbers.reducea,b=>a+b.num,0 全部的 total=addAlltotal//按预期返回10
我做错了什么?

我对这类事情也不熟悉,但我想知道,为什么不把const addToPos=pos=>amount=>{…pos,x:pos.x+amount}重写为const addToPos=amount=>pos=>{…pos,x:pos.x+amount}呢

const pipe=…fns=>x=>fns.reduceacc,f=>facc,x 常量增益=[{power:5,类型:'SPEED'},{power:2,类型:'SPEED'}] 设pos={x:0,y:0} const addToPos=amount=>pos=>{…pos,x:pos.x+amount} 常量add1ToPos=addToPos1 常量add2ToPos=addToPos2 const addAll=pos=>管道 添加1个选项, add2ToPos, addToPosbuffs.reducea,b=>a+b.power,0, 销售时点情报系统 pos=addAllpos
logpos我对这类事情也不熟悉,但我想知道,为什么不将const addToPos=pos=>amount=>{…pos,x:pos.x+amount}重写为const addToPos=amount=>pos=>{…pos,x:pos.x+amount}

const pipe=…fns=>x=>fns.reduceacc,f=>facc,x 常量增益=[{power:5,类型:'SPEED'},{power:2,类型:'SPEED'}] 设pos={x:0,y:0} const addToPos=amount=>pos=>{…pos,x:pos.x+amount} 常量add1ToPos=addToPos1 常量add2ToPos=addToPos2 const addAll=pos=>管道 添加1个选项, add2ToPos, addToPosbuffs.reducea,b=>a+b.power,0, 销售时点情报系统 pos=addAllpos
console.logposconsole.log中的fns.reduce回调将帮助您pos=>addToPosposbuffs.reducea,b=>a+b.power,而不是0works@JaromandaX哦,现在一切都说得通了。当我应该给管道一个函数时,我正在执行addToTotal。多谢各位much@JaromandaX等等,最后一个例子是有数字的,它是怎么工作的?不知道。。。curry混淆了fns.reduce回调中的meconsole.log,这将帮助您pos=>addToPosposbuffs.reducea,b=>a+b.power,而不是0works@JaromandaX哦,现在一切都说得通了。当我应该给管道一个函数时,我正在执行addToTotal。多谢各位much@JaromandaX等等,最后一个例子是有数字的,它是怎么工作的?不知道。。。咖喱把我搞糊涂了