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

溫馨提示×

溫馨提示×

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

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

scala的For表達式怎么使用

發布時間:2021-12-08 14:59:54 來源:億速云 閱讀:94 作者:iii 欄目:大數據

這篇文章主要講解了“scala的For表達式怎么使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“scala的For表達式怎么使用”吧!

Scala 提供一個輕量級的標記方式用來表示 序列推導。推導使用形式為 for (enumerators) yield e 的 for 表達式,此處 enumerators 指一組以分號分隔的枚舉器。一個 enumerator 要么是一個產生新變量的生成器,要么是一個過濾器。for 表達式在枚舉器產生的每一次綁定中都會計算 e 值,并在循環結束后返回這些值組成的序列。

看下例:

case class User(name: String, age: Int)
val userBase = List(User("Travis", 28),  User("Kelly", 33),  User("Jennifer", 44),  User("Dennis", 23))
val twentySomethings = for (user <- userBase if (user.age >=20 && user.age < 30))  yield user.name
twentySomethings.foreach(name => println(name))

這里 for 循環后面使用的 yield 語句實際上會創建一個 List。因為當我們說 yield user.name 的時候,它實際上是一個 List[String]user <- userBase 是生成器,if (user.age >=20 && user.age < 30) 是過濾器用來過濾掉那些年齡不是20多歲的人。

下面這個例子復雜一些,使用了兩個生成器。它計算了 0n-1 的所有兩兩求和為 v 的數字的組合:

def foo(n: Int, v: Int) =   for (i <- 0 until n;        j <- i until n if i + j == v)   yield (i, j)
foo(10, 10) foreach {  case (i, j) =>    println(s"($i, $j) ")  }

這里 n == 10v == 10。在第一次迭代時,i == 0 并且 j == 0 所以 i + j != v 因此沒有返回值被生成。在 i 的值遞增到 1 之前,j 的值又遞增了 9 次。如果沒有 if 語句過濾,上面的例子只會打印出如下的結果:

(0, 0) (0, 1) (0, 2) (0, 3) (0, 4) (0, 5) (0, 6) (0, 7) (0, 8) (0, 9) (1, 1) ...

注意 for 表達式并不局限于使用列表。任何數據類型只要支持 withFiltermap,和 flatMap 操作(不同數據類型可能支持不同的操作)都可以用來做序列推導。

你可以在使用 for 表達式時省略 yield 語句。此時會返回 Unit。當你想要執行一些副作用的時候這很有用。下面的例子輸出和上面相同的結果,但是沒有使用 yield

def foo(n: Int, v: Int) =   for (i <- 0 until n;        j <- i until n if i + j == v)   println(s"($i, $j)")
foo(10, 10)

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

向AI問一下細節

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

AI

宁强县| 蛟河市| 阳西县| 东乡| 威宁| 海晏县| 乡城县| 舟山市| 邹平县| 天祝| 乐东| 类乌齐县| 乐昌市| 方正县| 增城市| 南康市| 金阳县| 双江| 饶平县| 周至县| 福鼎市| 巩留县| 吕梁市| 武义县| 延津县| 正安县| 防城港市| 高台县| 乐山市| 舟曲县| 威宁| 阿拉尔市| 习水县| 大冶市| 利川市| 项城市| 海伦市| 房产| 遂宁市| 鄢陵县| 临湘市|