内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

Scala編程的思考方法是什么

這篇文章主要講解了“Scala編程的思考方法是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Scala編程的思考方法是什么”吧!

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序定制開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了兗州免費建站歡迎大家使用!

在進行什么編程的時候,你用什么方法來思考呢?用命令是方法來考慮的話,一定是考慮“首先有一個變量,然后一邊循環(huán)一邊判斷一下這樣的條件,接著進行這種操作···”這樣的操作步驟吧。

面向?qū)ο笫椒椒▉砜紤]時,一定是先考慮“程序中出現(xiàn)的這個對象里有什么東西(數(shù)據(jù))呀?”,然后再給對象分配 “動作”(方法)吧。整體印象應(yīng)該是,“對象”們互相分配好自己的工作,對象自己只做自己的工作其他的工作交給其他對象來完成,“對象”們互相合作來完成一個處理吧。即使是面向?qū)ο蟮那闆r下,對于一般語言來說,對象方法內(nèi)也是用命令方式來實現(xiàn)的。

那么,函數(shù)式編程該是怎樣的景象呢?函數(shù)式編程是“將函數(shù)應(yīng)用在值或者對象上”這種思考方法,也就是函數(shù)只是將值或者對象轉(zhuǎn)換成不同的別的東西。這樣說,可能函數(shù)式方法還是很難在讀者腦中浮現(xiàn),那么就以“命令型”和“函數(shù)式”兩種類型的例子為基礎(chǔ)進行闡述吧。

[Scala講座]題目:架子上的蘋果

題目內(nèi)容為模擬“架子上有100個蘋果,一個個剝皮吃掉***一個也沒有了?!斑@個過程。運行結(jié)果的樣子因該如下所示:

> scala AppleCounter  99 apples on the wall.  98 apples on the wall.  :  2 apples on the wall.  1 apple on the wall.  no apple on the wall.

當(dāng)蘋果只有1或0個的時候,由于不是復(fù)數(shù)情況,所以處理方法有所不同。先用命令方式來實現(xiàn)一下。

object AppleCounter{  def main(args:Array[String]):Unit = {  var appleList:List[String] = List()  for(i <- 1 to 100) {  var counter = 100 -i  if (counter == 1) appleList = appleList ::: List("1 apple on the wall.")  if (counter == 0) appleList = appleList ::: List("no apple on the wall.")  if (counter != 1 && counter != 0)  appleList = appleList ::: List(counter + " apples on the wall.")  }  appleList.foreach(x => println(x))  }  }

首先準(zhǔn)備好列表變量appleList,接著做100次循環(huán)。循環(huán)中用變量counter來存放當(dāng)前所剩的蘋果數(shù),并根據(jù)該數(shù)字向例表末尾加入描述文本,其中對于1個和0個的情況進行特殊處理。***使用appleList的foreach方法對每一列表成員進行打印操作。題外話,由于Scala是函數(shù)式+面向?qū)ο笳Z言,所以能夠以這種命令式方法來編程,這對于不熟悉函數(shù)式編程的用戶來說也還真不錯。
好了,這次用函數(shù)式的方法來重新實現(xiàn)一下同樣的邏輯。那么該怎樣考慮函數(shù)式的實現(xiàn)呢?下面是實現(xiàn)例子。

object AppleCounter {  def main(args:Array[String]):Unit = {val appleList = (0 until 100).reverse.map(x => x match {  case 1 => "1 apple on the wall." case 0 => "no apple on the wall." case _ => x + " apples on the wall." })  appleList.foreach(x => println(x))  }  }

這里不是想說明“程序短了不少啊···”,而是希望大家明白思考方法的不同之處(不過這里并沒有聲明變量appleList的類型,能夠進行如此復(fù)雜的類型推斷也真是挺厲害的呀!)。編寫這段程序的時候,我一開始就沒有考慮到循環(huán)這個概念。比起循環(huán),我考慮的是如何將函數(shù)用在數(shù)字列表變量上。首先不是邏輯,而是創(chuàng)建用于執(zhí)行函數(shù)的對象(這里是數(shù)字列表),然后考慮選擇哪種函數(shù)來執(zhí)行。
首先考慮創(chuàng)建如下的列表對象。

List(99, 98, 97, .... 2, 1, 0)

這個通過(0 until 100).reverse部分來實現(xiàn)。接著對于這個列表的一個個數(shù)字,考慮返回數(shù)字相對應(yīng)字符串的函數(shù)。對應(yīng)部分如下

(上面的列表).map(x => x match {  case 1 => "1 apple on the wall." case 0 => "no apple on the wall." case _ => x + " apples on the wall." })

用Scala進行像樣的函數(shù)式編程時,map是最重要的函數(shù)之一。也就是,對于列表中的每個元素用map函數(shù)傳進來的函數(shù)執(zhí)行一下,然后返回他的結(jié)果列表。這里傳遞給map函數(shù)的參數(shù)(函數(shù)對象)內(nèi)容是:對于1返回1 apple on the wall.;對于0返回no apple on the wall;其他情況比如22,返回22 apples on the wall。根據(jù)該內(nèi)容,map函數(shù)返回如下列表

List("99 apples on the wall.", "98 apples on the wall.", …"no apple on the wall.")

***一行類似于命令式編程,對于例表appleList用foreach方法循環(huán)遍歷,并用foreach傳進的函數(shù)打印列表所有的元素,然后程序結(jié)束。
函數(shù)map不僅在List類中有,其他很多類中也有。

Scala編程的思考方法是什么

Scala講座 圖:map函數(shù)概念圖

函數(shù)式語言中List具有強大的功能,這里再一次強調(diào),函數(shù)式編程不是考慮如何循環(huán),而是首先考慮創(chuàng)建作為操作源的列表,然后考慮將怎樣的函數(shù)適用于列表中的元素。由于使用如此風(fēng)格的編程方式,所以就不需要保存用于循環(huán)的計數(shù)器呀,臨時變量什么的了。

感謝各位的閱讀,以上就是“Scala編程的思考方法是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Scala編程的思考方法是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

當(dāng)前名稱:Scala編程的思考方法是什么
本文來源:http://www.rwnh.cn/article28/psgijp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、微信小程序、網(wǎng)站排名、網(wǎng)站內(nèi)鏈、網(wǎng)站營銷、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營
通江县| 楚雄市| 会宁县| 灵山县| 大埔区| 白银市| 林西县| 普兰店市| 历史| 铁岭市| 墨脱县| 仙居县| 齐河县| 芜湖县| 张家界市| 阿拉善盟| 新泰市| 通山县| 荔浦县| 仪陇县| 文水县| 彰化县| 常宁市| 三江| 图片| 济源市| 子洲县| 沿河| 通海县| 高雄县| 新竹市| 大新县| 通道| 内黄县| 洪洞县| 岳池县| 广灵县| 宁蒗| 靖安县| 内江市| 盘山县|