mostly-adequate-guide-chinese icon indicating copy to clipboard operation
mostly-adequate-guide-chinese copied to clipboard

在“代码组合——函数饲养”一节里发现了个错误

Open wqcstrong opened this issue 6 years ago • 4 comments

...
...
// 前面的例子中我们必须要写两个组合才行,但既然组合是符合结合律的,我们就可以只写一个,
// 而且想传给它多少个函数就传给它多少个,然后让它自己决定如何分组。

var lastUpper = compose(toUpperCase, head, reverse);

lastUpper(['jumpkick', 'roundhouse', 'uppercut']);
//=> 'UPPERCUT'

在上述代码中,我个人计算的和控制台输出的答案都是"JUMPKICK"。还望作者确认一下,不知道到底是我搞错了还是您大意了、

wqcstrong avatar Dec 25 '17 05:12 wqcstrong

其实上面的代码我也还有一个问题不是很理解。在调用compose传三个参数的时候,第三个参数在compose函数里面怎么就调到了???

wqcstrong avatar Dec 25 '17 06:12 wqcstrong

@wqcstrong 前文定义的compose 只组合2个函数。 所以才输出JUMPKICK啊 并没有使用reverse这个函数。 这里compose是组合任意多个函数的。要么自己写,要么调用lodash或者ramda的compose。

yjhmelody avatar Dec 31 '17 10:12 yjhmelody

compose(toUpperCase, head, reverse)(['jumpkick', 'roundhouse', 'uppercut'])
==
toUpperCase(head(reverse(['jumpkick', 'roundhouse', 'uppercut'])))

as02700 avatar Feb 08 '18 09:02 as02700

其实上面的代码我也还有一个问题不是很理解。在调用compose传三个参数的时候,第三个参数在compose函数里面怎么就调到了???

@wqcstrong 原文已修改为,首先介绍接受任意个参数的 compose 定义,然后从接受两个参数的简化版本开始介绍。见 May 2018 的提交 https://github.com/MostlyAdequate/mostly-adequate-guide/commit/2c8decedb4f83a5a46e97472b0eaea038bf782f3

muzimuzhi avatar Sep 27 '20 01:09 muzimuzhi