成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

《java 8 實戰(zhàn)》讀書筆記 -第十四章 函數(shù)式編程的技巧

nemo / 1886人閱讀

摘要:但是,最好使用差異化的類型定義,函數(shù)簽名如下其實二者說的是同一件事。后者的返回值和初始函數(shù)的返回值相同,即。破壞式更新和函數(shù)式更新的比較三的延遲計算的設(shè)計者們在將引入時采取了比較特殊的方式。四匹配模式語言中暫時并未提供這一特性,略。

一、無處不在的函數(shù)

一等函數(shù):能夠像普通變量一樣使用的函數(shù)稱為一等函數(shù)(first-class function)
通過::操作符,你可以創(chuàng)建一個方法引用,像使用函數(shù)值一樣使用方法,也能使用Lambda表達(dá)式(比如,(int x) -> x + 1)直接表示方法的值。

Function strToInt = Integer::parseInt;
1.高階函數(shù)

能滿足下面任一要求就可以被稱為高階函數(shù)(higher-order function):

接受至少一個函數(shù)作為參數(shù)

返回的結(jié)果是一個函數(shù)

Java 8中,函數(shù)不僅可以作為參數(shù)傳遞,還可以作為結(jié)果返回,能賦值給本地變量,也可以插入到某個數(shù)據(jù)結(jié)構(gòu)。比如,一個計算口袋的程序可能有這樣的一個Map>。

用不同的方式實現(xiàn)類型定義,如下所示:

Function, Function> 

我們把它定義成Function類型(最左邊的Function),目的是想顯式地向你確認(rèn)可以將這個函數(shù)傳遞給另一個函數(shù)。但是,最好使用差異化的類型定義,函數(shù)簽名如下:

Function differentiate(Function func) 

其實二者說的是同一件事。

2.科里化
科里化的理論定義
科里化是一種將具備2個參數(shù)(比如,x和y)的函數(shù)f轉(zhuǎn)化為使用一個參數(shù)的函數(shù)g,并且這個函數(shù)的返回值也是一個函數(shù),它會作為新函數(shù)的一個參數(shù)。后者的返回值和初始函數(shù)的返回值相同,即
f(x,y) = (g(x))(y)。
ps:通俗點,就是把接受多個參數(shù)的函數(shù)變換成接受一個單一參數(shù)的函數(shù),并且返回(接受余下參數(shù)而且返回結(jié)果的)新函數(shù)的技術(shù)

當(dāng)然,我們可以由此推出:你可以將一個使用了6個參數(shù)的函數(shù)科里化成一個接受第2、4、6號參數(shù),并返回一個接受5號參數(shù)的函數(shù),這個函數(shù)又返回一個接受剩下的第1號和第3號參數(shù)的函數(shù)。一個函數(shù)使用所有參數(shù)僅有部分被傳遞時,通常我們說這個函數(shù)是部分應(yīng)用的(partially applied)。

二、持久化數(shù)據(jù)結(jié)構(gòu)

應(yīng)該注意的第一件事是,函數(shù)式方法不允許修改任何全局?jǐn)?shù)據(jù)結(jié)構(gòu)或者任何作為參數(shù)傳入的參數(shù)。

1.破壞式更新和函數(shù)式更新的比較

三、Stream 的延遲計算
Java 8的設(shè)計者們在將Stream引入時采取了比較特殊的方式。其中一個比較顯著的局限是,你無法聲明一個遞歸的Stream,因為Stream僅能使用一次。
主要是利用Supplier,其他略。
四、匹配模式

Java 8語言中暫時并未提供這一特性,略。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/74563.html

相關(guān)文章

  • Java8實戰(zhàn)》-讀書筆記第一章(01)

    摘要:依舊使用剛剛對蘋果排序的代碼?,F(xiàn)在,要做的是篩選出所有的綠蘋果,也許你會這一個這樣的方法在之前,基本上都是這樣寫的,看起來也沒什么毛病。但是,現(xiàn)在又要篩選一下重量超過克的蘋果。 《Java8實戰(zhàn)》-讀書筆記第一章(01) 最近一直想寫點什么東西,卻不知該怎么寫,所以就寫寫關(guān)于看《Java8實戰(zhàn)》的筆記吧。 第一章內(nèi)容較多,因此打算分幾篇文章來寫。 為什么要關(guān)心Java8 自1996年J...

    codeGoogle 評論0 收藏0
  • java 8 實戰(zhàn)讀書筆記 -第三章 Lambda表達(dá)

    摘要:利用前面所述的方法,這個例子可以用方法引用改寫成下面的樣子構(gòu)造函數(shù)引用對于一個現(xiàn)有構(gòu)造函數(shù),你可以利用它的名稱和關(guān)鍵字來創(chuàng)建它的一個引用。 第三章 Lambda表達(dá)式 函數(shù)式接口 函數(shù)式接口就是只定義一個抽象方法的接口,哪怕有很多默認(rèn)方法,只要接口只定義了一個抽象方法,它就仍然是一個函數(shù)式接口。 常用函數(shù)式接口 showImg(https://segmentfault.com/img...

    whinc 評論0 收藏0
  • Java8實戰(zhàn)》-第六章讀書筆記(用流收集數(shù)據(jù)-01)

    摘要:收集器用作高級歸約剛剛的結(jié)論又引出了優(yōu)秀的函數(shù)式設(shè)計的另一個好處更易復(fù)合和重用。更具體地說,對流調(diào)用方法將對流中的元素觸發(fā)一個歸約操作由來參數(shù)化。另一個常見的返回單個值的歸約操作是對流中對象的一個數(shù)值字段求和。 用流收集數(shù)據(jù) 我們在前一章中學(xué)到,流可以用類似于數(shù)據(jù)庫的操作幫助你處理集合。你可以把Java 8的流看作花哨又懶惰的數(shù)據(jù)集迭代器。它們支持兩種類型的操作:中間操作(如 filt...

    EscapedDog 評論0 收藏0
  • Java 8 函數(shù)編程讀書筆記——lambda表達(dá)

    摘要:本文是函數(shù)式編程第二章的讀書筆記。的語法簡化了使用匿名內(nèi)部類時的模板代碼,讓程序員專注于編寫想要執(zhí)行的行為,也讓代碼更加簡潔易讀。中最重要的函數(shù)接口類型推斷為新成員表達(dá)式提供了類型推斷的支持,在不需要聲明參數(shù)類型的表達(dá)式中表現(xiàn)的有為明顯。 本文是「Java 8 函數(shù)式編程」第二章的讀書筆記。 Lambda引入的變化 Lambda表達(dá)式,是一種緊湊的、傳遞行為的方式,從編程思想上來講,...

    lx1036 評論0 收藏0
  • Java 8 函數(shù)編程讀書筆記——數(shù)據(jù)并行化

    摘要:限制編寫并行流,存在一些與非并行流不一樣的約定。底層框架并行流在底層沿用的框架,遞歸式的分解問題,然后每段并行執(zhí)行,最終由合并結(jié)果,返回最后的值。 本書第六章的讀書筆記,也是我這個系列的最后一篇讀書筆記。后面7、8、9章分別講的測試、調(diào)試與重構(gòu)、設(shè)計和架構(gòu)的原則以及使用Lambda表達(dá)式編寫并發(fā)程序,因為筆記不好整理,就不寫了,感興趣的同學(xué)自己買書來看吧。 并行化流操作 關(guān)于并行與并發(fā)...

    leone 評論0 收藏0
  • 《Spring實戰(zhàn)讀書筆記——Spring簡介

    摘要:如何降低開發(fā)的復(fù)雜性最小侵入編程通過面向接口和依賴注入實現(xiàn)松耦合基于編程慣例和切面進(jìn)行聲明式編程通過模板減少樣板式代碼容器在應(yīng)用中,不再由對象自行創(chuàng)建或管理它們之間的依賴關(guān)系容器負(fù)責(zé)創(chuàng)建對象裝配對象配置它們并管理它們的整個生命周期。 歡迎大家關(guān)注我的微信公眾號,一起探討Java相關(guān)技術(shù) showImg(https://segmentfault.com/img/bVboaBO?w=129...

    CKJOKER 評論0 收藏0

發(fā)表評論

0條評論

nemo

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<