天天看點

God of spark is Scala---程式流程控制

一、順序控制

1. 順序控制介紹

程式從上到下逐行地執行,中間沒有任何判斷和跳轉。

2. 順序控制舉例和注意事項

Scala中定義變量時采用合法的前向引用。如:

def main(args : Array[String]) : Unit = {
        var num1 = 12
        var num2 = num1 + 2
}
           

錯誤形式:

def main(args : Array[String]) : Unit = {
        var num2 = num1 + 2
        var num1 = 12
}
           

二. 分支控制if-else

1. 單分支
  • 基本文法
if (條件表達式) {
	執行代碼塊
}
           

說明:當條件表達式為ture 時,就會執行 { } 的代碼。

2. 雙分支
  • 基本文法
if (條件表達式) {
 執行代碼塊1 
 } else {
執行代碼塊2
}
           

說明:當條件表達式成立,即執行代碼塊1,否則執行代碼塊2.

3. 多分支
  • 基本文法
if (條件表達式1) {
執行代碼塊1
  }
  else if (條件表達式2) {
執行代碼塊2
  }
   ……
   else {
執行代碼塊n
   }
           

說明:當條件表達式1成立時,即執行代碼塊1,如果表達式1不成立,才去判斷表達式2是否成立,如果表達式2成立,就執行代碼塊2,以此類推,如果所有的表達式都不成立,則執行 else 的代碼塊,注意:隻能有一個執行入口。

4. 注意事項**
  • 如果大括号{}内的邏輯代碼隻有一行,大括号可以省略, 這點和java 的規定一樣。
  • Scala中任意表達式都是有傳回值的,也就意味着if else表達式其實是有傳回結果的,具體傳回結果的值取決于滿足條件的代碼體的最後一行内容.
  • Scala中是沒有三元運算符,因為可以這樣簡寫:
    God of spark is Scala---程式流程控制
5. 擴充:嵌套分支
  • 基本介紹

在一個分支結構中又完整的嵌套了另一個完整的分支結構,裡面的分支的結構稱為内層分支外面的分支結構稱為外層分支。嵌套分支不要超過3層

  • 基本文法
if(){       
	if(){      
	}else{
	}
}
           

三. for循環控制

  • 基本介紹

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

  • 基本案例
for(i <- 1 to 3){
  print(i + " ")
}
println()
           
  • 說明
  1. i 表示循環的變量, <- 規定好 to 規定
  2. i 将會從 1-3 循環, 前後閉合
  3. 輸出10句 “hello,尚矽谷!”
  • for循環文法詳細講解

    https://blog.csdn.net/qq_43437122/article/details/107455978

四. while循環控制

  • 基本文法
循環變量初始化
while (循環條件) {
           循環體(語句)
           循環變量疊代
}
           
  • 說明
  1. 循環條件是傳回一個布爾值的表達式
  2. while循環是先判斷再執行語句
  3. 與If語句不同,While語句本身沒有值,即整個While語句的結果是Unit類型的()
  4. 因為while中沒有傳回值,是以當要用該語句來計算并傳回結果時,就不可避免的使用變量 ,而變量需要聲明在while循環的外部,那麼就等同于循環的内部對外部的變量造成了影響,是以不推薦使用,而是推薦使用for循環。

五. 多重循環控制

  • 介紹:
  1. 将一個循環放在另一個循環體内,就形成了嵌套循環。其中,for ,while ,do…while均可以作為外層循環和内層循環。【建議一般使用兩層,最多不要超過3層】
  2. 實質上,嵌套循環就是把内層循環當成外層循環的循環體。當隻有内層循環的循環條件為false時,才會完全跳出内層循環,才可結束外層的當次循環,開始下一次的循環。
  3. 設外層循環次數為m次,内層為n次, 則内層循環體實際上需要執行m*n=mn次。

六. 總結:

  1. Scala裡面的do while循環控制和while類似,隻不過它是先執行後判斷
  2. Scala裡面沒有continue和break關鍵字,但是依然能實作這種效果,使用for循環守衛和抽象控制,抽象控制後面的博文會介紹,循環守衛參考博文Scala for循環的詳細講解。

繼續閱讀