lambda與函式式——響應式Spring的道法術器
阿新 • • 發佈:2018-12-28
https://blog.csdn.net/jinzhencs/article/details/50748202
https://blog.csdn.net/get_set/article/details/79480121
Lambda語法詳解 我們在此抽象一下lambda表示式的一般語法: 1 (Type1 param1, Type2 param2, ..., TypeN paramN) -> { 2 statment1; 3 statment2; 4 //............. 5 return statmentM; 6 } 從lambda表示式的一般語法可以看出來,還是挺符合上面給出的非精確版本的定義–“一段帶有輸入引數的可執行語句塊”。 上面的lambda表示式語法可以認為是最全的版本,寫起來還是稍稍有些繁瑣。彆著急,下面陸續介紹一下lambda表示式的各種簡化版: 1. 引數型別省略–絕大多數情況,編譯器都可以從上下文環境中推斷出lambda表示式的引數型別。這樣lambda表示式就變成了: 1 (param1,param2, ..., paramN) -> { 2 statment1; 3 statment2; 4 //............. 5 return statmentM; 6 } 所以我們最開始的例子就變成了(省略了List的建立): 1 List<String> lowercaseNames = names.stream().map((name) -> {return name.toLowerCase();}).collect(Collectors.toList()); 2. 當lambda表示式的引數個數只有一個,可以省略小括號。lambda表示式簡寫為: 1 param1 -> { 2 statment1; 3 statment2; 4 //............. 5 return statmentM; 6 } 所以最開始的例子再次簡化為: 1 List<String> lowercaseNames = names.stream().map(name -> {return name.toLowerCase();}).collect(Collectors.toList()); 3. 當lambda表示式只包含一條語句時,可以省略大括號、return和語句結尾的分號。lambda表示式簡化為: 1 param1 -> statment 所以最開始的例子再次簡化為: 1 List<String> lowercaseNames = names.stream().map(name -> name.toLowerCase()).collect(Collectors.toList()); 4. 使用Method Reference(具體語法後面介紹) 1 //注意,這段程式碼在Idea 13.0.2中顯示有錯誤,但是可以正常執行 2 List<String> lowercaseNames = names.stream().map(String::toLowerCase).collect(Collectors.toList());