日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Scala的控制结构

發布時間:2025/3/8 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Scala的控制结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、 if else表達式

scala中沒有三目運算符,因為根本不需要。scala中if else表達式是有返回值的,如果if或者else返回的類型不一樣,就返回Any類型(所有類型的公共超類型)。
例如:if else返回類型一樣

scala> val a3 = 10| val a4 =| if(a3 > 20){| "a3大于20"| }else{| "a3小于20"| }| println(a4) a3小于20 val a3: Int = 10 val a4: String = a3小于20

例如:if else返回類型不一樣

scala> val a5 =| if(a3 > 20){| "a3大于20"| }| println(a5) () val a5: Any = ()

如果缺少一個判斷,什么都沒有返回,但是Scala認為任何表達式都會有值,對于空值,使用Unit類,寫做(),叫做無用占位符,相當于java中的void。

注意:行尾的位置不需要分號,只要能夠從上下文判斷出語句的終止即可。但是如果在單行中寫多個語句,則需要分號分割。在Scala中,{}快包含一系列表達式,其結果也是一個表達式。塊中最后一個表達式的值就是塊的值。

二、while表達式

Scala提供和Java一樣的while和do循環,與If語句不同,While語句本身沒有值,即整個While語句的結果是Unit類型的()。

  • while循環
  • scala> var n = 1;| val while1 = while(n <= 10){| n += 1| }| println(while1)| println(n) () 11 var n: Int = 11 val while1: Unit = ()
  • while循環的中斷
  • scala> import scala.util.control.Breaks| val loop = new Breaks| loop.breakable{| while(n <= 20){| n += 1;| if(n == 18){| loop.break()| }| }| }| println(n) 18 import scala.util.control.Breaks val loop: scala.util.control.Breaks = scala.util.control.Breaks@6ce9771c

    注意:scala并沒有提供break和continue語句來退出循環,如果需要break,可以通過幾種方法來做1、使用Boolean型的控制變量 2、使用嵌套函數,從函數中return 3、使用Breaks對象的break方法。

    三、 for表達式

    Scala 也為for 循環這一常見的控制結構提供了非常多的特性,這些for 循環的特性被稱為for 推導式(for comprehension)或for 表達式(for expression)。

    1) for示例1:to左右兩邊為前閉后閉的訪問
    scala> for(i <- 1 to 3; j <- 1 to 3){| print(i * j + " ")| }| println() 1 2 3 2 4 6 3 6 9
    2) for示例2:until左右兩邊為前閉后開的訪問
    scala> for(i <- 1 until 3; j <- 1 until 3) {| print(i * j + " ")| }| println() 1 2 2 4
    3) for示例3:引入保護式(也稱條件判斷式)該語句只打印1 3。保護式滿足為true則進入循環內部,滿足為false則跳過,類似于continue
    scala> for(i <- 1 to 3 if i != 2) {| print(i + " ")| }| println() 1 3
    4) for示例4:引入變量
    scala> for(i <- 1 to 3; j = 4 - i) {| print(j + " ")| }| println() 3 2 1
    5) for示例5:將遍歷過程中處理的結果返回到一個,使用yield關鍵字
    scala> val for5 = for(i <- 1 to 10) yield i| println(for5) Vector(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) val for5: IndexedSeq[Int] = Vector(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    6) for示例6:使用花括號{}代替小括號()
    scala> for{| i <- 1 to 3| j = 4 - i}| print(i * j + " ")| println() 3 4 3

    注意:{}和()對于for表達式來說都可以。for 推導式有一個不成文的約定:當for 推導式僅包含單一表達式時使用原括號,當其包含多個表達式時使用大括號。值得注意的是,使用原括號時,早前版本的Scala 要求表達式之間必須使用分號。

    總結

    以上是生活随笔為你收集整理的Scala的控制结构的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。