国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁(yè) > 編程 > Java > 正文

分享關(guān)于Java語(yǔ)言中的函數(shù)編程

2019-11-17 06:34:36
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  假如您從事大型企業(yè)項(xiàng)目開(kāi)發(fā),您就會(huì)熟悉編寫(xiě)模塊化代碼的好處。良構(gòu)的、模塊化的代碼更輕易編寫(xiě)、調(diào)試、理解和重用。java 開(kāi)發(fā)人員的問(wèn)題是,函數(shù)編程范型長(zhǎng)期以來(lái)只是通過(guò)像 Haskell、Scheme、Erlang 和 Lisp 這樣的非凡語(yǔ)言實(shí)現(xiàn)的。在本文中,作者 Abhijit Belapurkar 展示了,如何使用像閉包(closure)和 高階函數(shù)(higher order function)這樣的函數(shù)編程結(jié)構(gòu),在 Java 語(yǔ)言中編寫(xiě)良構(gòu)的、模塊化的代碼。
  
  Java 語(yǔ)言中常被忽視的一個(gè)方面是它被歸類(lèi)為一種命令式(imperative)編程語(yǔ)言。命令式編程雖然由于與 Java 語(yǔ)言的關(guān)聯(lián)而相當(dāng)普及,但是并不是惟一可用的編程風(fēng)格,也不總是最有效的。在本文中,我將探討在 Java 開(kāi)發(fā)實(shí)踐中加入不同的編程方法 ── 即函數(shù)編程(FP)。
  
  命令式編程是一種用程序狀態(tài)描述計(jì)算的方法。使用這種范型的編程人員用語(yǔ)句改變程序狀態(tài)。這就是為什么,像 Java 這樣的程序是由一系列讓計(jì)算機(jī)執(zhí)行的命令 (或者語(yǔ)句) 所組成的。 另一方面, 函數(shù)編程是一種強(qiáng)調(diào)表達(dá)式的計(jì)算而非命令的執(zhí)行的一種編程風(fēng)格。表達(dá)式是用函數(shù)結(jié)合基本值構(gòu)成的,它類(lèi)似于用參數(shù)調(diào)用函數(shù)。
  
  本文將介紹函數(shù)編程的基本特點(diǎn),但是重點(diǎn)放在兩個(gè)非凡適用于 Java 開(kāi)發(fā)框架的元素:閉包和高階函數(shù)。假如您曾經(jīng)使用過(guò)像 Python、Ruby 或者 Groovy (請(qǐng)參閱 參考資料) 這樣的靈敏開(kāi)發(fā)語(yǔ)言,那么您就可能已經(jīng)碰到過(guò)這些元素。在這里,您將看到在 Java 開(kāi)發(fā)框架中直接使用它們會(huì)出現(xiàn)什么情況。我將首先對(duì)函數(shù)編程及其核心元素做一個(gè)簡(jiǎn)短的、概念性的綜述,然后用常用的編程場(chǎng)景展示,用結(jié)構(gòu)化的方式使用閉包和高階函數(shù)會(huì)給 Java 代碼帶來(lái)什么好處。
  
  什么是函數(shù)編程?
  
  在經(jīng)常被引用的論文 “Why Functional PRogramming Matters”(請(qǐng)參閱 參考資料) 中,作者 John Hughes 說(shuō)明了模塊化是成功編程的要害,而函數(shù)編程可以極大地改進(jìn)模塊化。在函數(shù)編程中,編程人員有一個(gè)天然框架用來(lái)開(kāi)發(fā)更小的、更簡(jiǎn)單的和更一般化的模塊, 然后將它們組合在一起。函數(shù)編程的一些基本特點(diǎn)包括:
  
  支持閉包和高階函數(shù)。
  支持懶惰計(jì)算(lazy evaluation)。
  使用遞歸作為控制流程的機(jī)制。
  加強(qiáng)了引用透明性。
  沒(méi)有副作用。
  
  我將重點(diǎn)放在在 Java 語(yǔ)言中使用閉包和高階函數(shù)上,但是首先對(duì)上面列出的所有特點(diǎn)做一個(gè)概述。
  
  閉包和高階函數(shù)
  
  函數(shù)編程支持函數(shù)作為第一類(lèi)對(duì)象,有時(shí)稱為 閉包或者 仿函數(shù)(functor)對(duì)象。實(shí)質(zhì)上,閉包是起函數(shù)的作用并可以像對(duì)象一樣操作的對(duì)象。與此類(lèi)似,F(xiàn)P 語(yǔ)言支持 高階函數(shù)。高階函數(shù)可以用另一個(gè)函數(shù)(間接地,用一個(gè)表達(dá)式) 作為其輸入?yún)?shù),在某些情況下,它甚至返回一個(gè)函數(shù)作為其輸出參數(shù)。這兩種結(jié)構(gòu)結(jié)合在一起使得可以用優(yōu)雅的方式進(jìn)行模塊化編程,這是使用 FP 的最大好處。
  
  命令式編程
  
  命令式編程這個(gè)名字是從自然語(yǔ)言(比如英語(yǔ))的 祈使語(yǔ)氣(imperative mood)衍生出來(lái)的,在這種語(yǔ)氣中公布命令并按照?qǐng)?zhí)行。除 Java 語(yǔ)言之外,C 和 C++ 是另外兩種廣泛使用的、符合命令式風(fēng)格的高級(jí)編程語(yǔ)言。
  
  懶惰計(jì)算
  
  除了高階函數(shù)和仿函數(shù)(或閉包)的概念,F(xiàn)P 還引入了 懶惰計(jì)算的概念。在懶惰計(jì)算中,表達(dá)式不是在綁定到變量時(shí)立即計(jì)算,而是在求值程序需要產(chǎn)生表達(dá)式的值時(shí)進(jìn)行計(jì)算。延遲的計(jì)算使您可以編寫(xiě)可能潛在地生成無(wú)窮輸出的函數(shù)。因?yàn)椴粫?huì)計(jì)算多于程序的其余部分所需要的值,所以不需要擔(dān)心由無(wú)窮計(jì)算所導(dǎo)致的 out-of-memory 錯(cuò)誤。一個(gè)懶惰計(jì)算的例子是生成無(wú)窮 Fibonacci 列表的函數(shù),但是對(duì) 第 n 個(gè)Fibonacci 數(shù)的計(jì)算相當(dāng)于只是從可能的無(wú)窮列表中提取一項(xiàng)。
  
  遞歸
  
  FP 還有一個(gè)特點(diǎn)是用遞歸做為控制流程的機(jī)制。例如,Lisp 處理的列表定義為在頭元素后面有子列表,這種表示法使得它自己自然地對(duì)更小的子列表不斷遞歸。
  
  關(guān)于實(shí)現(xiàn)庫(kù)
  
  我使用了由 Apache Commons Functor 項(xiàng)目提供的庫(kù)構(gòu)建本文使用的例子。Apache Commons Functor 庫(kù)包括大量基本構(gòu)造,可以在涉及閉包和高階函數(shù)的復(fù)雜使用場(chǎng)景中重復(fù)使用。當(dāng)然,可以使用不同的實(shí)現(xiàn)(如 Java Generic Libraries、Mango 或者 Generic Algorithms for Java),而不會(huì)對(duì)在本文中所討論和展示的概念有影響,盡管您必須下載和使用 Apache Commons Functor 庫(kù)才能演示這里的例子。
  
  引用透明性
  
  函數(shù)程序通常還加強(qiáng) 引用透明性,即假如提供同樣的輸入,那么函數(shù)總是返回同樣的結(jié)果。就是說(shuō),表達(dá)式的值不依靠于可以改變值的全局狀態(tài)。這使您可以從形式上推斷程序行為,因?yàn)楸磉_(dá)式的意義只取決于其子表達(dá)式而不是計(jì)算順序或者其他表達(dá)式的副作用。這有助于驗(yàn)證正確性、簡(jiǎn)化算法,甚至有助于找出優(yōu)化它的方法。
  
  副作用
  
  副作用是修改系統(tǒng)狀態(tài)的語(yǔ)言結(jié)構(gòu)。因?yàn)?FP 語(yǔ)言不包含任何賦值語(yǔ)句,變量值一旦被指派就永遠(yuǎn)不會(huì)改變。而且,調(diào)用函數(shù)只會(huì)計(jì)算出結(jié)果 ── 不會(huì)出現(xiàn)其他效果。因此,F(xiàn)P 語(yǔ)言沒(méi)有副作用。
  
  這些基本描述應(yīng)足以讓您完成本文中的函數(shù)編程例子。有關(guān)這個(gè)主題的更多參考資料請(qǐng)參閱 參考資料一節(jié)。
  
  Java 語(yǔ)言中的函數(shù)編程
  
  不管是否相信,在 Java 開(kāi)發(fā)實(shí)踐中您可能已經(jīng)碰到過(guò)閉包和高階函數(shù),盡管當(dāng)時(shí)您可能沒(méi)有意識(shí)到。例如,許多 Java 開(kāi)發(fā)人員在匿名內(nèi)部類(lèi)中封閉 Java 代碼的一個(gè)詞匯單元(lexical unit)時(shí)第一次碰到了 閉包。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产蜜臀av在线播放| 国产男女无套在线播放| 免费的黄网站在线观看| 亚洲欧美一区二区三区在线播放| 国产三级视频在线播放线观看| 免费a级在线播放| 在线中文av| 国产在线视频福利| 五月婷婷在线观看| 国产超级va在线视频| 四虎国产精品永久在线| 成网站在线观看人免费| 国产对白国语对白| 国产久草在线| 国产精品一区二区三区高清在线| 国产亚洲精品拍拍拍拍拍| 国产超碰97| 老师我好爽再深一点的视频| 国产天堂av| 四虎免费播放| 国产精品久久一区二区三区不卡| 精精国产xxxx视频在线动漫| 噜噜噜噜噜在线视频| 99久久精品免费观看国产| 狠狠综合久久久综合| 精品推荐蜜桃传媒| 黄色三级视频在线观看| 国产天堂资源| www网站在线观看| 日本一二三区视频免费高清| 免费男女羞羞的视频网站中文字幕| 久草在线视频网| 国产成人精品久久一区二区小说| 欧美专区日韩| 亚洲精品天堂在线观看| 国产超碰97| 国产不卡精品一区二区三区| 国产精品亚洲第五区在线| 青青草视频在线免费观看| av高清资源| 中文字幕4区| av高清在线| 国产成人精品实拍在线| 国产日本在线视频| 国产一区二区三区美女秒播| 国产九色在线| 中文字幕亚洲精品视频| 国产精品作爱| 中文字幕第一页av| 国产色在线播放| 国产国语**毛片高清视频| 国产视频你懂的| 国产xxxx做受性欧美88| 国产三级视频| 精品国产一区二区三区不卡在线 | 精品无人乱码| av大片在线播放| 亚洲人成电影| 福利视频在线导航| 国产原创在线播放| 国产色在线 com| 精精国产xxxx视频在线中文版| 一区二区精品区| 日本动漫理论片在线观看网站| h网址在线观看| 超碰在线网站| 国产精品69xx| 免费a级在线播放| 国产黄色免费在线观看| 性网站在线播放| 国产精品一区在线看| 在线视频福利| 国产无遮挡又黄又爽免费网站 | 伊人网在线免费观看| 毛片网站在线观看| 国产成人精品实拍在线| 色综合久久五月天| 午夜视频免费在线观看| 在线中文视频| 中文字幕免费中文| 超碰在线国产| 中文字幕av高清在线观看| 国产主播福利在线| 99在线免费视频| 国产无遮挡又黄又爽免费软件| av人人综合网| 国产传媒在线播放| 资源视频在线播放免费| 一本大道久久a久久精品| 中文字幕中文字幕在线中高清免费版 | 国产在线视频自拍| 伊人222成人综合网| 综合激情丁香| 国产美女高潮一区二区三区| 亚洲www色| 国产youjizz在线| 国产视频中文字幕在线观看| 黄色三级视频在线观看| 性欧美精品xxxx| 亚洲xxxxxx| eeuss影院网站免费观看| 2020亚洲男人天堂| 99在线播放| 亚洲an天堂an在线观看| 四虎国产精品永久地址998| 在线看黄网站| 女同一区二区免费aⅴ| 麻豆精品视频入口| 国产在线观看18| 午夜国产福利在线| 国产一级网站视频在线| 久久久久久91精品色婷婷| jlzzjlzz欧美大全| www.国产精品.com| 国内自拍视频在线看免费观看| 福利在线观看| 91麻豆免费在线视频| 91国内在线| 精品美女在线观看视频在线观看 | 91www在线观看| 夜夜操com| 高清色视频在线观看| 国产在线观看网站| 中文字幕日本三级| 一区二区免费播放| 国产69精品久久app免费版| 中文字幕第一页av| 亚洲成人福利| 国产精品视频一区二区图片| 国产超碰在线| 日本不卡1区2区3区| 国产理论电影在线观看| 69国产精品视频| 懂色av中文在线| 97人人在线| 五月婷婷在线观看| 性国产高清在线观看| 国内精品不卡| 精品偷拍激情视频在线观看| 好看的中文字幕在线播放| 在线免费观看高清视频色| 国产乱视频在线观看| 亚洲精品午夜级久久久久| 国产美女视频一区二区三区| 夜夜操天天干| 国产黄色片大全| 国产免费福利网站| 亚洲精品自拍区在线观看| 国产娇喘精品一区二区三区图片| 久久久久久久久亚洲精品| 亚洲妇熟xxxx妇色黄| 国产成人亚洲欧美电影| 大香伊人中文字幕精品| 日本动漫理论片在线观看网站| 国产极品嫩模在线视频一区| 国内精品不卡| 懂色av中文在线| 激情丁香婷婷| 丁香在线视频| 九九在线观看免费视频| 欧美啪啪精品| 男人操女人免费网站| www.夜夜操| 久久综合第一页| 九七电影韩国女主播在线观看| 一本大道五月香蕉| 欧洲有码在线视频| www.色婷婷| 狠狠操视频网站| 国产麻豆精品视频一区二区| 二区三区中文字幕| 午夜视频免费在线观看| 国产写真视频在线观看| 2019天天操夜夜操| 日本视频三区| 国产免费黄网站| 精品视频在线一区二区| 日本在线观看| 国产偷倩在线播放| 99久热re在线精彩视频| 亚洲视频在线网| 爱福利在线视频| 日本片在线看| 激情综合网五月激情| 五月婷婷在线观看| 中文乱码字幕高清在线观看| 男人天堂亚洲| 国产系列在线观看| 日本一二区视频| 中文字幕有码在线视频| av高清在线| 中文字幕在线看精品乱码| 亚洲精品午夜级久久久久| 福利在线国产| av色在线观看| 国产wwww| 国产网红女主播精品视频| 亚洲综合激情六月婷婷在线观看 | 亚洲xxxxxx| 国产激情视频一区二区三区|