【Scala 教程】Scala 條件與循環語句

作者:夢家
個人站點:dreamhomes.top
公衆號:DreamHub

本文主要介紹 Scala 中的條件語句和循環語句,其中主要是 for 循環break 中斷 相差較大,其它語句與Java相差不大,但是也Mark一下!

由於介紹中包含說明、代碼及其運行結果,因此在jupyter中查看效果較好!Jupyter 傳送門~

條件語句

if...else 的語法格式如下:

if(布爾表達式){
   // 如果布爾表達式爲 true 則執行該語句塊
}else{
   // 如果布爾表達式爲 false 則執行該語句塊
}

嵌套格式如下:

if(布爾表達式 1){
   // 如果布爾表達式 1 爲 true 則執行該語句塊
}else if(布爾表達式 2){
   // 如果布爾表達式 2 爲 true 則執行該語句塊
}else if(布爾表達式 3){
   // 如果布爾表達式 3 爲 true 則執行該語句塊
}else {
   // 如果以上條件都爲 false 執行該語句塊
}
var x = 30;
if( x == 10 ){
    println("X 的值爲 10")
}else if( x == 20 ){
    println("X 的值爲 20")
}else if( x == 30 ){
    println("X 的值爲 30")
}else{
    println("無法判斷 X 的值")
}
X 的值爲 30

循環語句

Scala 語言提供了以下三種循環類型:

  • while 循環:運行一系列語句,如果條件爲true,會重複運行,直到條件變爲false。
  • do...while循環:類似 while 語句區別在於判斷循環條件之前,先執行一次循環的代碼塊。
  • for循環:用來重複執行一系列語句直到達成特定條件達成,一般通過在每次循環完成後增加計數器的值來實現。

Scala 不直接支持breakcontinue 語句,從 2.8 版本後提供了一種中斷循環的方式:

  • break語句:中斷循環

while 循環

while語句形式:

while(condition)
{
   statement(s);
}

do while 語句形式:

do {
   statement(s);
} while( condition );
//示例
var a = 0;

// while 循環執行
while( a < 5 ){
 println( "while a: " + a );
 a = a + 1;
}

a = 0;
// do 循環
do{
 println( "do while a: " + a );
 a = a + 1;
}while(a < 5)
while a: 0
while a: 1
while a: 2
while a: 3
while a: 4
do while a: 0
do while a: 1
do while a: 2
do while a: 3
do while a: 4

for 循環

語句形式:

for( var x <- Range ){
   statement(s);
}

以上語法中,Range 可以是一個數字區間表示 i to j ,或者 i until j。左箭頭 <- 用於爲變量 x 賦值。

//i to j 語法(包含 j)的實例:
var a = 0
// for 循環
for( a <- 1 to 5){
 println( "Value of a: " + a )
}
Value of a: 1
Value of a: 2
Value of a: 3
Value of a: 4
Value of a: 5
// i until j 語法(不包含 j)的實例:
var a = 0
// for 循環
for( a <- 1 until 5){
 println( "Value of a: " + a )
}
Value of a: 1
Value of a: 2
Value of a: 3
Value of a: 4
// 使用分號 (;) 來設置多個區間,它將迭代給定區間所有的可能值。
var a = 0
var b = 0
// for 循環
for( a <- 1 to 3; b <- 1 to 3){
    println( "Value pair: " + a + ' ' + b)
}
Value pair: 1 1
Value pair: 1 2
Value pair: 1 3
Value pair: 2 1
Value pair: 2 2
Value pair: 2 3
Value pair: 3 1
Value pair: 3 2
Value pair: 3 3

for 循環集合

for( var x <- List ){
   statement(s);
}

以上語法中, List 變量是一個集合,for 循環會迭代所有集合的元素。

// 使用 List() 來創建集合
val numList = List(1,2,3,4,5)

// for 循環
for( a <- numList ){
 println( "Value of a: " + a )
}
Value of a: 1
Value of a: 2
Value of a: 3
Value of a: 4
Value of a: 5

for 循環過濾

for( var x <- List
      if condition1; if condition2...
   ){
   statement(s);

使用分號(;)來爲表達式添加一個或多個的過濾條件。

var a = 0;
val numList = List(1,2,3,4,5,6,7,8,9,10);

// for 循環
for( a <- numList
   if a != 3; if a < 8 ){
 println( "Value of a: " + a );
}
Value of a: 1
Value of a: 2
Value of a: 4
Value of a: 5
Value of a: 6
Value of a: 7

for 使用 yield

var retVal = for{ var x <- List
     if condition1; if condition2...
}yield x

大括號中用於保存變量和條件,retVal 是變量, 循環中的 yield 會把當前的元素記下來,保存在集合中,循環結束後將返回該集合。

var a = 0;
val numList = List(1,2,3,4,5,6,7,8,9,10);

// for 循環
var retVal = for{ a <- numList 
                if a != 3; if a < 8
              }yield a

// 輸出返回值
for( a <- retVal){
 println( "Value of a: " + a );
}
Value of a: 1
Value of a: 2
Value of a: 4
Value of a: 5
Value of a: 6
Value of a: 7

Break 語句

當在循環中使用 break 語句,在執行到該語句時,就會中斷循環並執行循環體之後的代碼塊。

// 導入以下包
import scala.util.control._

// 創建 Breaks 對象
val loop = new Breaks;

// 在 breakable 中循環
loop.breakable{
    // 循環
    for(...){
       ....
       // 循環中斷
       loop.break;
   }
}
import scala.util.control._
var a = 0;
val numList = List(1,2,3,4,5,6,7,8,9,10);

val loop = new Breaks;
loop.breakable {
 for( a <- numList){
    println( "Value of a: " + a );
    if( a == 4 ){
       loop.break;
    }
 }
}
Value of a: 1
Value of a: 2
Value of a: 3
Value of a: 4
// 中斷嵌套循環
import scala.util.control._
var a = 0;
var b = 0;
val numList1 = List(1,2,3,4,5);
val numList2 = List(11,12,13);

val outer = new Breaks;
val inner = new Breaks;

outer.breakable {
 for( a <- numList1){
    println( "Value of a: " + a );
    inner.breakable {
       for( b <- numList2){
          println( "Value of b: " + b );
          if( b == 12 ){
             inner.break;
          }
       }
    } // 內嵌循環中斷
 }
} // 外部循環中斷
Value of a: 1
Value of b: 11
Value of b: 12
Value of a: 2
Value of b: 11
Value of b: 12
Value of a: 3
Value of b: 11
Value of b: 12
Value of a: 4
Value of b: 11
Value of b: 12
Value of a: 5
Value of b: 11
Value of b: 12

聯繫作者

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章