真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

scala的For表達(dá)式怎么使用

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

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供秦都企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、H5技術(shù)、小程序制作等業(yè)務(wù)。10年已為秦都眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。

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

看下例:

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 循環(huán)后面使用的 yield 語句實(shí)際上會(huì)創(chuàng)建一個(gè) List。因?yàn)楫?dāng)我們說 yield user.name 的時(shí)候,它實(shí)際上是一個(gè) List[String]。user <- userBase 是生成器,if (user.age >=20 && user.age < 30) 是過濾器用來過濾掉那些年齡不是20多歲的人。

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

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。在第一次迭代時(shí),i == 0 并且 j == 0 所以 i + j != v 因此沒有返回值被生成。在 i 的值遞增到 1 之前,j 的值又遞增了 9 次。如果沒有 if 語句過濾,上面的例子只會(huì)打印出如下的結(jié)果:

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

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

你可以在使用 for 表達(dá)式時(shí)省略 yield 語句。此時(shí)會(huì)返回 Unit。當(dāng)你想要執(zhí)行一些副作用的時(shí)候這很有用。下面的例子輸出和上面相同的結(jié)果,但是沒有使用 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表達(dá)式怎么使用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)scala的For表達(dá)式怎么使用這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!


當(dāng)前名稱:scala的For表達(dá)式怎么使用
本文來源:http://weahome.cn/article/ghessd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部