函式式程式設計

2021-10-16 13:23:35 字數 2550 閱讀 5060

函式式程式設計帶來的編碼上的優勢,更加注重業務邏輯的編寫。

1、純函式

左邊部分**是純函式,函式的返回值完全依賴於輸入引數,並沒有成員函式影響到返回結果,從輸入引數中能完全看出輸出的結果。

右邊部分**不是純函式,因為輸入引數決定不了輸出的結果,輸出結果還與成員變數value有關。

2、高階函式

上述的函式必須是乙個函式式介面,即每個介面內只含有乙個抽象方法,下面會有介紹。

對於第二個組合,compose先計算括號內的函式再計算括號外面的函式。即先計算doubleop函式,再計算squareop函式。

andthen正好相反,即先計算squareop函式,再計算doubleop函式。

陣列:arrays.stream(array)

集合:各種集合.stream()    例如list:userlist.stream()

stream.of()   即將陣列拆分開,乙個個進入流中。內部可以存放任意物件,此時返回的物件將是object型別

stream.builder()與stream.of() 類似,但在最後要加乙個build()才可以成為流。

第一行:中間操作符,即該類操作符通常後面會繼續跟其它操作符

餘下的是終端操作符,執行到該操作符後即終止,後面不可再接操作符

foreach:等同於for迴圈

foreachordered在非並行流時與foreach一樣,但在parallelstream()中會保證順序

findfirst:返回第乙個滿足條件的結果

findany在非並行流時與findfirst一樣,但在parallelstream()中不能夠保證順序

anymatch:有任何乙個匹配上的即可,返回的是布林值

map:型別轉換,一對一邏輯對映

第一行方法:判斷是否為空

第二行方法:當資料為空時,可以呼叫的處理方法

orelse("hello"):當流出來的資料為空時,可以賦予乙個新固定常量

orelseget(()->"hello"):相當於乙個工廠,可以返回乙個函式

orelsethrow:丟擲異常

or:返回乙個optional流

第三行方法:有值的時候繼續處理的方法,有值時引數為該值

ifpresent:有值的時候執行乙個**塊內的邏輯

ifpresentorelse:有值、無值兩種情況均需要**塊來進一步進行邏輯處理時

collecting:與collect類似,但多乙個引數,第乙個引數進行邏輯處理,第二個引數是進行集合聚合;可以作為中間操作符

collectingandthen:第乙個引數是進行集合聚合,然後對聚合後的集合進行操作

flatmap:用來處理流,對流進行扁平化處理,即內部如果是巢狀性元素,將它們拆開不再巢狀

1、通常情況下,可以用來減少作用,如將乙個陣列減少成為乙個數字等

2、類似於collect,可以用於做轉換

**一:         0:初始化數值           acc:累加器        curr:當前數值     **功能:數值累加

**二:  建立乙個mutablelnt陣列,不斷的把user新增進去,最後做乙個add操作

兩種查詢語句的不同:使用流是對資料單個讀取操作,操作完後釋放,記憶體效能上都更優。

函式式程式語言python 函式式程式設計

函式是python內建支援的一種封裝,我們通過把大段 拆成函式,通過一層一層的函式呼叫,就可以把複雜任務分解成簡單的任務,這種分解可以稱之為面向過程的程式設計。函式就是面向過程的程式設計的基本單元。而函式式程式設計 請注意多了乙個 式 字 functional programming,雖然也可以歸結...

函式式程式設計

最近在看一些關於js方面的東東,除了些ajax的基本應用,還了解了些函式式程式設計 fp 的東東。雖然以前也玩過幾天lisp的,不過因為當時完全對fp的東西沒有概念,壓根就不知道原來這是list那一族最大的特性之一 另外我知道的還有個是gc,orz.光注意那些詭異的 表 去了。總結一下,傳統上認為f...

函式式程式設計

維基百科 函式式程式設計 英語 functional programming 或者函式程式設計,又稱泛函程式設計,是一種程式設計范型,它將計算機運算視為數學上的函式計算,並且避免使用程式狀態以及易變物件。函式程式語言最重要的基礎是 演算 lambda calculus 而且 演算的函式可以接受函式當...