请允许我再次脱离主题,在这里谈一谈函数式编程。
将函数作为参数传递并不仅仅出于技术上的考量。对软件设计来说,这其实是个哲学问题。想想这样的场景:在index文件中,我们可以将_router_对象传递进去,服务器随后可以调用这个对象的_route_函数。
就像这样,我们传递一个东西,然后服务器利用这个东西来完成一些事。嗨那个叫路由的东西,能帮我把这个路由一下吗?
但是服务器其实不需要这样的东西。它只需要把事情做完就行,其实为了把事情做完,你根本不需要东西,你需要的是动作。也就是说,你不需要_名词_,你需要_动词_。
理解了这个概念里最核心、最基本的思想转换后,我自然而然地理解了函数编程。
我是在读了Steve Yegge的大作[名词王国中的死刑](http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html)之后理解函数编程。你也去读一读这本书吧,真的。这是曾给予我阅读的快乐的关于软件的书籍之一。