1 functional programming该怎么理解?
functions就是values,就像String or Numbers那样,可以构造匿名函数,并把函数赋给某个变量 或者 传递给其他函数(higher-order function)
2 higher-order function有什么好处呢?
可以利用small function来compose into large function,比如最常见的是filter 这个作用在array上的function,它可以接受其他的function来作为argument,这个filter function返回的函数值是:filtered version of the array
不使用filter函数:
使用filter函数:
3 为什么上面例子中higher-order function的代码更少呢?
并不是因为写的代码少,而是因为这段代码本身的logic本身就更少,这样的写法允许resue functions,使得能够很容易地compose functions。例子中的filter和判断是否为dog类型的function just slop into each other (slop是描述物体或液体在没有控制或限制的情况下发生混乱、溢出或交错的行为)。
上面的代码完全等价于下面:可以看出,这使得判断是否为dog的逻辑完全与数据本身进行了解耦,这个逻辑不再依赖于当前特定的这个animals数据本身了;array对象还有一个与filter相反的对应函数reject,可以直接把isDog函数传入,就可以直接得到所有不是Dog类型的动物对象了
来自:YT/watch?v=BMUiFMZr7vk&list=PL0zVEGEvSaeEd9hlmCXrk5yUyqUag-n84的笔记