if/else
的表達式語法和java相似,只是須要注意的是:java
一、if/else有返回值編程
二、scala代碼結尾不須要「;」,除非一行要寫多條語句,這個和Python
相似。bash
上圖中,在scala腳本中,打印出了if的返回值0。函數
在scala中「{}
」包含的一系列表達式,叫作塊語句,塊中最後一個表達式的值就是塊的值
。 scala
while循環
,和java的while和do循環相同,這裏就不過多講解了,實例以下圖所示。code
在"Repl"中寫多行代碼的時候,每寫一行敲一下「回車鍵」而後它會自動去識別程序是否結束,直到你真正的寫完代碼,有時候不是很方便; 還有一種粘貼的方法,輸入:paste
而後就能夠隨意的寫代碼了,寫完後Ctrl+D
退出並運行代碼,如上圖所示。對象
語句結構:遞歸
for( i <- 表達式 ) #讓變量i遍歷<-右邊的表達式的全部值,i具體執行取決於表達式 循環體
在for循環的變量以前沒有val或var的指定,該變量的類型是集合的元素類型
。循環變量的做用域一直持續到循環結束。 until
:返回一個並不包含上線的區間。 scala中沒有break和continue來退出循環,咱們能夠這樣操做:作用域
- 使用Boolean的變量控制。
- 使用嵌套函數,能夠從函數當中return。
- 使用Breaks對象的break方法。
breakable{ for(...){ if(...) break ;//#退出breakable塊 } }
守衛
**(if開頭的Boolean表達式
);語法如圖:it
(圖來源於:Scala編程)
參數的類型
。返回值類型
(由於沒法推斷出遞歸函數的類型)。在函數中,咱們可使用默認參數
。函數調用時:
一、若是沒用給出全部參數,函數會使用默認參數(後面不夠的參數使用默認值)。 二、也能夠指定參數名,參數名不須要按順序排列。 三、若是混合使用(未名參數和帶名參數),只要未名參數排在前面便可。
四、變長參數,能夠接受多個參數
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,因爲沒有返回值也能夠省略「=」號,下面語句相同: