1. 函數式程式設計 (Functional Pragramming)

傳統的命令式程式設計,是你必須一步一步的寫出程式要如何做,但常常寫出來的東西參雜了許多與主要邏輯無關的程式碼,顯得很囉嗦;而目前流行的函數式程式設計,其主要精神在於告訴程式「做什麼」而不是「怎麼做」。

一般在支援函數式程式設計的語言中,與一般其它語言最大的不同,即是可以把函數做為一個變數或參數來傳遞,以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運算式。