這篇文章主要講解了“scala條件控制與循環(huán)怎么實(shí)現(xiàn)”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“scala條件控制與循環(huán)怎么實(shí)現(xiàn)”吧!
成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比正鑲白網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式正鑲白網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋正鑲白地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。
一、條件判斷if
在scala中,if條件判斷是有返回值的,就是if或者else的最后一個(gè)值,如下:
scala> var age = 23age: Int = 23scala> var isAdult = if(age >= 18) "yes" else "no"isAdult: String = yes
因?yàn)閍ge是23已經(jīng)大于18,所以if語(yǔ)句返回了yes給isAdult。此外我們可以注意到,在isAdult: String = yes
中,isAdult是scala默認(rèn)給的String類型,因?yàn)閕f和else都是String類型,那如果我們不給一樣的類型呢?來(lái)試試吧:
scala> if(age >= 18) "yes" else 0res0: Any = yes
如果if和else類型不一致,scala則會(huì)取兩者的公共父類型,String和Int的公共父類型就是Any,它是所有其他類的超類哦。那么我們?cè)賮?lái)思考一個(gè)問題,如果只有if沒有else,if還不滿足的話會(huì)返回什么呢?如下:
scala> if(age < 18) "yes"res1: Any = ()
如果if后面沒有跟else,則默認(rèn)else的值是Unit,用()表示。
通常情況scala解釋器一次只能解釋一行,但這明顯不足以滿足條件判斷的需求,很多時(shí)候代碼量不止一行,所以接下來(lái)說說怎樣使用多行if
(1)使用大括號(hào){},最后用}收尾即可
scala> if(age > 18){ | "yes" }else{ | "no"}res3: String = yes
(2)使用:paste進(jìn)入粘貼模式,隨意編輯,編輯完后摁Ctrl+D即可退出粘貼模式
scala> :paste// Entering paste mode (ctrl-D to finish)if(age > 18) "adult"else "children"// Exiting paste mode, now interpreting.res5: String = adult
二、輸入輸出print、println、readLine()
print打印輸出語(yǔ)句不加換行符,println會(huì)加換行符,如下:
scala> print("Hello world")Hello worldscala> println("Hello world")Hello world//這里受println影響換行了
在println打印完成后,進(jìn)行了換行,print卻沒有。
readLine()用于用戶輸入,如下:
scala> readLine()res10: String = Hello
在readLine()執(zhí)行時(shí)是看不見自己的輸入的,輸入完回車即可看見,比如上方輸入的 “Hello”就是輸入完回車才看見的
三、循環(huán)while、for
scala的while和java基本一致,如下:
scala> :paste// Entering paste mode (ctrl-D to finish)var number = 0while(number<5){print(number + " ")number += 1}// Exiting paste mode, now interpreting.0 1 2 3 4 number: Int = 5
注意,scala是沒有java的for循環(huán)的,只有使用while或者簡(jiǎn)易版本的for循環(huán),如下:
scala> for(i <- 0 to 5) print(i+" ")0 1 2 3 4 5
這是一段從0遍歷到5打印的代碼,需要變量名,小箭頭<-
,初始值,終止值,也可以使用until代替to,這樣的話不會(huì)到達(dá)終止值,如下:
scala> for(i <- 0 until 5) print(i+" ")0 1 2 3 4
對(duì)于字符串也可以通過for循環(huán)來(lái)完成遍歷
scala> for(c <- "Hello,World") print(c + " ")H e l l o , W o r l d
scala沒有java的break跳出循環(huán),但是可以使用Breaks包下的break函數(shù)達(dá)成類似效果,
scala> import scala.util.control.Breaks._import scala.util.control.Breaks._scala> :paste// Entering paste mode (ctrl-D to finish)breakable { var n = 10 for(c <- "Hello World") { if(n == 5) break; print(c) n -= 1 }}// Exiting paste mode, now interpreting.Hello
接下來(lái)說一下for循環(huán)的高級(jí)版本,多重循環(huán),我們來(lái)實(shí)現(xiàn)一個(gè)99乘法表,如下:
scala> :paste// Entering paste mode (ctrl-D to finish)for(i <- 1 to 9; j <- 1 to 9) { if(j == 9) { println(i * j) } else { print(i * j + " ") }}// Exiting paste mode, now interpreting.1 2 3 4 5 6 7 8 92 4 6 8 10 12 14 16 183 6 9 12 15 18 21 24 274 8 12 16 20 24 28 32 365 10 15 20 25 30 35 40 456 12 18 24 30 36 42 48 547 14 21 28 35 42 49 56 638 16 24 32 40 48 56 64 729 18 27 36 45 54 63 72 81
在這串代碼中,i從1到9,j也是從1到9,第一次循環(huán)i=1,j=1;第二次循環(huán)i=1,j=2,直到i=1,j=9時(shí),打印換行,然后i=2,j=1,以此類推
for循環(huán)還可以條件判斷,我們實(shí)現(xiàn)一個(gè)取偶數(shù),如下:
scala> for(i <- 1 to 10 if i%2 ==0)print(i+" ")2 4 6 8 10
還可以通過for循環(huán)構(gòu)造集合,如下:
scala> for(i <- 1 to 10) yield ires11: scala.collection.immutable.IndexedSeq[Int] = Vector(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
yield關(guān)鍵字可以配合for循環(huán)直接構(gòu)造集合。
感謝各位的閱讀,以上就是“scala條件控制與循環(huán)怎么實(shí)現(xiàn)”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)scala條件控制與循環(huán)怎么實(shí)現(xiàn)這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
標(biāo)題名稱:scala條件控制與循環(huán)怎么實(shí)現(xiàn)
標(biāo)題路徑:http://aaarwkj.com/article16/gihodg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、云服務(wù)器、建站公司、網(wǎng)站內(nèi)鏈、虛擬主機(jī)、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)