1. 程式人生 > >Spark學習(4)——scala條件控制與迴圈

Spark學習(4)——scala條件控制與迴圈

if表示式

If表示式的定義:在scala中,if表示式是有值得,就是if或者else中最後一行語句返回的值
例如:val age =30;if(age>18) 1 else 0
執行結果:

if表示式賦值給一個變數:val  result = if(age>18) 1 else 0

If表示式的型別推斷:由於if表示式是有值的,而ifelse子句的值型別可能不同,此時if表示式的值型別是什麼呢,scala會自行推斷,取兩個型別的公共父型別

例如: if(age>18) 1 else 010都是int,所以返回值型別也是int

例如: if(age>18) “adult” else 0,

此時ifelse的值型別分別是Stringint,則表示式的值型別是AnyAnyStringint的公共父型別。

如果if後面沒有跟else 則預設else的值是Unit,也用()表示,類似於Java中的void或者null

例如val age =30;if(age >18) “adult”,此時就相當於if(age >18) “adult” else  ()

語句終結符、塊表示式

預設情況下,scala不需要語句終結符,預設將每一行作為一個語句

一行放多條語句:如果一行要放多條語句,則必須使用語句終結符

例如:使用分號作為語句終結符,

Var a,b,c

=0;if(a<10){b=b+1;c=c+1},執行結果如下:

通常來說,對於多行語句,還是會使用花括號的方式

If(a<10){

b=b+1

c=c+1

}

塊表示式:塊表示式,指的就是{}中的值,其中可以包含多條語句,最後一個語句的值就是塊表示式返回的值。

例如:var d =if(a<10){b=b+1;c=c+1;b+c}

輸入與輸出

Printprintlnprint列印時不會加換行符,println列印時會加個換行符

例如:print(“hello world”);println(“hello world”)

Printf:printf

可以用於格式化,例如:printf(“hi my name is  %s\n”,”張三”)

readLine:readLine允許我們從控制檯讀取使用者輸入的資料,類似Java中的System.inScanner的作用

例如:

Val  name =readLine(“welcome ,please  tell me your name”)

Print(“please tell me your age”)

Val age =readInt()

If(age >18){

Printf(“Hi ,%s,you are %d years old”,name,age)

}else{

Printf(“Hi ,%s,you are %d years old”,name,age)

}



迴圈

While do迴圈scalawhile do迴圈,基本語義與Java相同,例如:var  n =10

While(n >0){

Print(n+” ”)

n-=1

}

Scala 沒有Java那種for迴圈,可以使用scala獨有的簡易for迴圈

簡易版for迴圈:var n=10 for(i <-  1 to n) print(i+” ”)

使用until:表示不達到上限,for( I <-  1 until n) print(i+” ”),如執行結果,不包括上邊界10

也可以對字串進行遍歷,類似於Java的增強for迴圈, for(c <- “Hello World”) print(c)

跳出迴圈

Scala沒有提供類似於Javabreak語句

但是可以使用boolean變數,return,或者Breaksbreak函式來替代使用

例如:

Import  scala.util.control.Breaks._

Breakable{

var n =10

for(c <- “Hello World”) {

If(n== 5) break

Print(c)

n -=1

}

}

高階for迴圈

多重for迴圈

for(I <- 1 to 9;j< - 1 to 9){

If(j==9){

Println(I * j+” ”)

}else{

Print(I * j+” ”)

}

}

If 守衛 取偶數,scala可以在for語句中加入if判斷,例如:for(I <- 1 to 10 if  i%2 ==0) print(i)

for 推導式,構造集合

例如:for(I <- 1 to 10) yield i