作者:夢家
個人站點: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 不直接支持break
或 continue
語句,從 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