傳統的命令式程式設計,是你必須一步一步的寫出程式要如何做,但常常寫出來的東西參雜了許多與主要邏輯無關的程式碼,顯得很囉嗦;而目前流行的函數式程式設計,其主要精神在於告訴程式「做什麼」而不是「怎麼做」。
一般在支援函數式程式設計的語言中,與一般其它語言最大的不同,即是可以把函數做為一個變數或參數來傳遞,以JavaScript來說,可以用下幾種方法定義一個函式,並做為參數傳遞:
//直接指定函數名稱
function sayHello(name){
document.write("Hello " + name + "<br>");
}
//使用匿名函數,並指定給一個變數
var sayHello = function(name){
document.write("Hello " + name + "<br>");
}
sayHello("Mary");
//將函數變數指定給另一個變數
var sayAloha = sayHello;
sayAloha("John");
//將函數變數做為參數傳遞
["Allen", "Steve", "Bill"].forEach(sayAloha);
//直接傳遞匿名函式
["Allen", "Steve", "Bill"].forEach(function(e){console.log("Hi" + e);});
而在Java 8時,並沒有新增函式型態的基本類型,而是使用lambda運算式來達成函數式程式設計的需求,再配合新增的Stream API,可以說是繼Java的泛型及註文(Annotation)以來,Java最大的改進,可以讓寫出來的JAVA程式碼更簡潔、更有效率。
如果您是Android的開發者,因目前Android只支援到Java 7,你可參考使用 Gradle Retrolambda Plugin,同樣可以使用lambda運算式。