請允許我再次脫離主題,在這里談一談函數式編程。
將函數作為參數傳遞并不僅僅出于技術上的考量。對軟件設計來說,這其實是個哲學問題。想想這樣的場景:在index文件中,我們可以將_router_對象傳遞進去,服務器隨后可以調用這個對象的_route_函數。
就像這樣,我們傳遞一個東西,然后服務器利用這個東西來完成一些事。嗨那個叫路由的東西,能幫我把這個路由一下嗎?
但是服務器其實不需要這樣的東西。它只需要把事情做完就行,其實為了把事情做完,你根本不需要東西,你需要的是動作。也就是說,你不需要_名詞_,你需要_動詞_。
理解了這個概念里最核心、最基本的思想轉換后,我自然而然地理解了函數編程。
我是在讀了Steve Yegge的大作[名詞王國中的死刑](http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html)之后理解函數編程。你也去讀一讀這本書吧,真的。這是曾給予我閱讀的快樂的關于軟件的書籍之一。