剛開始工作時,使用的語言是ruby,使用Ruby可以寫出簡短而又功能強大的代碼,ruby語法簡單
最近一年接觸的都是java項目,剛剛接手到的一個項目使用了很多java 8的特性,代碼看起來簡潔許多,特此研究了一下
lambda語法:
JavaScript 是最典型的函數式編程語言。它有個好處,提供了一種強大的功能——閉包,相比於傳統的編程方法有很多優勢,閉包是一個可調用的對象,它記錄了一些信息,這些信息來自於創建它的作用域。
Java 現在提供的最接近閉包的概念便是 Lambda 表達式,雖然閉包與 Lambda 表達式之間存在顯著差別,但至少 Lambda 表達式是閉包很好的替代者。
Lambda 表達式是對象,他們必須依附於一類特別的對象類型——函數式接口(functional interface)
Java 中的 Lambda 表達式通常使用 (argument) -> (body) 語法書寫:
(arg1, arg2...) -> { body }
(type1 arg1, type2 arg2...) -> { body }
函數式接口
函數式接口是隻包含一個抽象方法聲明的接口。
每個 Lambda 表達式都能隱式地賦值給函數式接口
//Old way:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
for(Integer n: list) {
System.out.println(n);
}
//New way:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
list.forEach(n -> System.out.println(n));
//user stream and map:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
list.stream().map(n -> n*n).forEach(n -> System.out.println(n));