91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

scala中map與flatMap的區別是什么

發布時間:2021-08-19 20:59:02 來源:億速云 閱讀:147 作者:chen 欄目:編程語言

這篇文章主要講解了“scala中map與flatMap的區別是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“scala中map與flatMap的區別是什么”吧!

在函數式語言中,函數作為一等公民,可以在任何地方定義,在函數內或函數外,可以作為函數的參數和返回值,可以對函數進行組合。由于命令式編程語言也可以通過類似函數指針的方式來實現高階函數,函數式的最主要的好處主要是不可變性帶來的。沒有可變的狀態,函數就是引用透明(Referential transparency)的和沒有副作用(No Side Effect)。

任何一種函數式語言中,都有map函數與faltMap這兩個函數,比如python雖然不是純函數式語言,也有這兩個函數。再比如在jdk1.8之后,也加入了Lambda表達式,自然也支持map函數。

現在簡單說說scala中這兩個函數的用法。有一種觀點認為將map和flatMap說成Scala函數機制的核心都不為過分,其實是有一定道理的。因為實際中我們使用最多的場景就是對數據進行map操作或者flatMap操作。map函數的用法,顧名思義,將一個函數傳入map中,然后利用傳入的這個函數,將集合中的每個元素處理,并將處理后的結果返回。而flatMap與map唯一不一樣的地方就是傳入的函數在處理完后返回值必須是List,其實這也不難理解,既然是flatMap,那除了map以外必然還有flat的操作,所以需要返回值是List才能執行flat這一步。

總結:1. map會將每一條輸入映射為一個新對象。{蘋果,梨子}.map(去皮) = {去皮蘋果,去皮梨子} 其中: “去皮”函數的類型為:A => B

2.flatMap包含兩個操作:會將每一個輸入對象輸入映射為一個新集合,然后把這些新集合連成一個大集合。 {蘋果,梨子}.flatMap(切碎) = {蘋果碎片1,蘋果碎片2,梨子碎片1,梨子碎片2} 其中: “切碎”函數的類型為: A => List<B>

廢話不多說,看一個小例子就明白用法了。

object collection_t1 {  def flatMap1(): Unit = {  val li = List(1,2,3)  val res = li.flatMap(x => x match {   case 3 => List('a','b')   case _ => List(x*2)  })  println(res) }  def map1(): Unit = {  val li = List(1,2,3)  val res = li.map(x => x match {   case 3 => List('a','b')   case _ => x*2  })  println(res) }  def main(args: Array[String]): Unit = {  flatMap1()  map1() }}

將代碼run起來,最后輸出為:

List(2, 4, a, b)List(2, 4, List(a, b))

感謝各位的閱讀,以上就是“scala中map與flatMap的區別是什么”的內容了,經過本文的學習后,相信大家對scala中map與flatMap的區別是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

通城县| 沙田区| 田东县| 东宁县| 龙门县| 尼木县| 平乐县| 永兴县| 台州市| 策勒县| 沂水县| 临安市| 巴楚县| 顺昌县| 澳门| 临城县| 平罗县| 大悟县| 深水埗区| 永顺县| 宁强县| 平乡县| 东山县| 开封市| 古浪县| 阿勒泰市| 晋中市| 湘阴县| 胶南市| 扶余县| 张家界市| 长沙县| 浙江省| 右玉县| 沙田区| 大埔县| 巢湖市| 霍城县| 固始县| 沽源县| 饶平县|