Scala的控制结构
一、 if else表達式
scala中沒有三目運算符,因為根本不需要。scala中if else表達式是有返回值的,如果if或者else返回的類型不一樣,就返回Any類型(所有類型的公共超類型)。
例如:if else返回類型一樣
例如: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類型的()。
注意: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 92) for示例2:until左右兩邊為前閉后開的訪問
scala> for(i <- 1 until 3; j <- 1 until 3) {| print(i * j + " ")| }| println() 1 2 2 43) for示例3:引入保護式(也稱條件判斷式)該語句只打印1 3。保護式滿足為true則進入循環內部,滿足為false則跳過,類似于continue
scala> for(i <- 1 to 3 if i != 2) {| print(i + " ")| }| println() 1 34) for示例4:引入變量
scala> for(i <- 1 to 3; j = 4 - i) {| print(j + " ")| }| println() 3 2 15) 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的控制结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDFS-常用命令
- 下一篇: uint8 转换为 float