函式式程式設計帶來的編碼上的優勢,更加注重業務邏輯的編寫。
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 而且 演算的函式可以接受函式當...