Scala--控制結構和函數

條件表達式

if/else的表達式語法和java相似,只是須要注意的是:java

一、if/else有返回值編程

二、scala代碼結尾不須要「;」,除非一行要寫多條語句,這個和Python相似。bash

上圖中,在scala腳本中,打印出了if的返回值0。函數

塊語句

在scala中「{}」包含的一系列表達式,叫作塊語句,塊中最後一個表達式的值就是塊的值scala

while循環

while循環,和java的while和do循環相同,這裏就不過多講解了,實例以下圖所示。code

在"Repl"中寫多行代碼的時候,每寫一行敲一下「回車鍵」而後它會自動去識別程序是否結束,直到你真正的寫完代碼,有時候不是很方便; 還有一種粘貼的方法,輸入:paste而後就能夠隨意的寫代碼了,寫完後Ctrl+D退出並運行代碼,如上圖所示。對象

for循環

for基礎

語句結構:遞歸

for( i <- 表達式 )  #讓變量i遍歷<-右邊的表達式的全部值,i具體執行取決於表達式
  循環體

for循環的變量以前沒有val或var的指定,該變量的類型是集合的元素類型。循環變量的做用域一直持續到循環結束。 until:返回一個並不包含上線的區間。 scala中沒有breakcontinue來退出循環,咱們能夠這樣操做作用域

  1. 使用Boolean的變量控制。
  2. 使用嵌套函數,能夠從函數當中return。
  3. 使用Breaks對象的break方法。
  • eg:
breakable{
 for(...){
  if(...) break ;//#退出breakable塊
} }

for進階

  1. 在for循環「()」中可使用多個生成器, 用「;」隔開;
  2. 而且每個生成器均可以帶一個**守衛**(if開頭的Boolean表達式);
  3. 可使用變量,以下圖所示:

  • 若是for循環的循環體以yield開始,該循環就會構造出一個集合,每次迭代就生成一個集合的值。

函數

基本語法

語法如圖:it

(圖來源於:Scala編程)

  1. 函數必須指定參數的類型
  2. 函數只要不是遞歸的就不須要指定返回值類型(由於沒法推斷出遞歸函數的類型)。
  3. 在函數中,不須要使用return。

函數參數

在函數中,咱們可使用默認參數。函數調用時:

一、若是沒用給出全部參數,函數會使用默認參數(後面不夠的參數使用默認值)。 二、也能夠指定參數名,參數名不須要按順序排列。 三、若是混合使用(未名參數和帶名參數),只要未名參數排在前面便可。

四、變長參數,能夠接受多個參數

def sum(args:Int*) = {
 var result = 0 ;
 for(arg <- args) result+=arg
  result
}

調用函數,sum(3,4,6,23,3),函數獲得的是一個Seq類型的參數,注意調用函數是傳入的參數不能是一個區間,eg: sum(2 to 9)是不能夠的,應該爲sum(2 to 9:_*);

過程

在scala中,若是函數沒有返回值,那麼該返回值類型咱們能夠用Unit來表示,這種沒有返回值的函數咱們稱之爲過程

上面省略了Unit,因爲沒有返回值也能夠省略「=」號,下面語句相同:

相關文章
相關標籤/搜索