一、順序控制
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中是沒有三元運算符,因為可以這樣簡寫:
5. 擴充:嵌套分支
- 基本介紹
在一個分支結構中又完整的嵌套了另一個完整的分支結構,裡面的分支的結構稱為内層分支外面的分支結構稱為外層分支。嵌套分支不要超過3層
- 基本文法
if(){
if(){
}else{
}
}
三. for循環控制
- 基本介紹
Scala 也為for 循環這一常見的控制結構提供了非常多的特性,這些for 循環的特性被稱為for 推導式(for comprehension)或for 表達式(for expression)
- 基本案例
for(i <- 1 to 3){
print(i + " ")
}
println()
- 說明
- i 表示循環的變量, <- 規定好 to 規定
- i 将會從 1-3 循環, 前後閉合
- 輸出10句 “hello,尚矽谷!”
-
for循環文法詳細講解
https://blog.csdn.net/qq_43437122/article/details/107455978
四. while循環控制
- 基本文法
循環變量初始化
while (循環條件) {
循環體(語句)
循環變量疊代
}
- 說明
- 循環條件是傳回一個布爾值的表達式
- while循環是先判斷再執行語句
- 與If語句不同,While語句本身沒有值,即整個While語句的結果是Unit類型的()
- 因為while中沒有傳回值,是以當要用該語句來計算并傳回結果時,就不可避免的使用變量 ,而變量需要聲明在while循環的外部,那麼就等同于循環的内部對外部的變量造成了影響,是以不推薦使用,而是推薦使用for循環。
五. 多重循環控制
- 介紹:
- 将一個循環放在另一個循環體内,就形成了嵌套循環。其中,for ,while ,do…while均可以作為外層循環和内層循環。【建議一般使用兩層,最多不要超過3層】
- 實質上,嵌套循環就是把内層循環當成外層循環的循環體。當隻有内層循環的循環條件為false時,才會完全跳出内層循環,才可結束外層的當次循環,開始下一次的循環。
- 設外層循環次數為m次,内層為n次, 則内層循環體實際上需要執行m*n=mn次。
六. 總結:
- Scala裡面的do while循環控制和while類似,隻不過它是先執行後判斷
- Scala裡面沒有continue和break關鍵字,但是依然能實作這種效果,使用for循環守衛和抽象控制,抽象控制後面的博文會介紹,循環守衛參考博文Scala for循環的詳細講解。