關注點不同: 命令式程式設計關注的是怎樣做,告訴程式怎樣做,才能達到乙個功能 而函式式是關注做什麼,不需要告訴怎麼做,不需要關注實現的細節,告訴它要實現什麼功能即可
舉例:在一堆數字裡面找到最小的值,兩種實現方式如下
/**
* 什麼是函式式程式設計
*/public class whyuselambda ;
old(nums);
lambda(nums);
}// 命令式程式設計
public static void old(int nums)
}log.info("old method min: {}", min);
}// 函式式
public static void lambda(int nums)", min);
}}複製**
如此應該可以理解一下了,命令式程式設計需要我們告訴程式如何實現這個功能,注重實現的細節,函式式則不關注這個實現的細節,只要最終結果。
拓展一下剛才的例子,如果資料量很大,那麼按照之前的命令式程式設計**,消耗的時間就會很多,然後我們就得利用執行緒池和二分法等方法去優化我們的**,這裡面的**都是我們要實現的,而函式式就很便捷了,直接利用parallel方法快速優化,**如下:
int min = intstream.of(nums).parallel().min().getasint();
複製**
還有在**簡潔明瞭方面的對比:
public static void threadcontrast
() }).start();
new thread(() -> log.info("lambda method ok")).start();
}複製**
對比兩種寫法,你會發現函式式程式設計更優雅。也許你剛開始不怎麼習慣,但是用多了,你會發現,函式式程式設計是真的好用!
2. lambda 初接觸
修改一下上面使用執行緒的**如下:
public static void threadcontrast1
() };
new thread(target).start();
runnable target2 = () -> log.info("lambda method ok");
new thread(target2).start();
}複製**
可以看出, 這個 lambda 返回的是乙個介面的例項。
再修改一下**:
public static void threadcontrast2
() };
new thread((runnable)target).start();
object target2 = (runnable) () -> log.info("lambda method ok");
new thread((runnable)target2).start();
}複製**
如此可以看出,lambda 表示式要告訴它返回實現的介面型別。
簡單總結: lambda 表示式返回了乙個實現指定介面的例項
複製**
Scala函式式程式設計 1
val a list 1,2,3,4 遍歷迴圈 for i a print i for i 0 to a.length 1 println a i for i 0until a.length print a i foreach迭代列印 a.foreach x int println x 使用型別推斷...
談談函式式程式設計的優點(1)
談談函式式程式設計的優點 1 注 這是作者本人的體會和隨想,想到那裡寫到 不定時更新,有錯誤請指出。函式式程式設計 fp 和物件導向 oo 是兩種不同的程式設計正規化,近幾年,隨著對fp的重新認識,不少人認為相比oo,fp有一些明顯的有點,不少地方甚至於更近一籌。為何他們認為函式式程式設計 fp 優...
拿 C 搞函式式程式設計 1
最近閒下來了,準備出乙個 c 搞 fp 的合集。本合集所有 均以 c 8 為示例。可能你說,為什麼要這麼做呢?回答 為了好玩。另外,意義黨們請 gun cu ke!c 有委託,而且有 func 和 action 可以說函式被視為一等功名,跟 int bool 等型別並沒有什麼區別。那麼很多事情就簡單...