亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

南陵县| 西乌| 江门市| 托克逊县| 竹北市| 英超| 日土县| 广东省| 安陆市| 栾川县| 平定县| 西充县| 东兴市| 壶关县| 项城市| 陈巴尔虎旗| 汉阴县| 夏邑县| 宜良县| 广宗县| 凌源市| 云梦县| 长顺县| 刚察县| 沙田区| 青河县| 抚宁县| 石景山区| 泰和县| 郑州市| 洛宁县| 色达县| 方正县| 岱山县| 常山县| 洪洞县| 澎湖县| 老河口市| 巨鹿县| 中方县| 乐亭县|