前言 :
Scala 是一個可直譯、編譯、靜態、運行於 JVM 之上、可與 Java 互操作、融合物件導向編程特性與函式編程風格的程式語言. 從一些簡單的語法開始,了解 Scala 的許多特性,所以就算是起步走,東西也夠多了. 簡單的小程式可以使用 scala 指令,編譯的事就交給 scalac,編譯想快點就用 fsc. (Scala 官網), 運算式有傳回值,迴圈沒有,對了!Scala 沒有 break 與 continue.
for 運算式 :
如果你想要循序取出某個序列,例如陣列,則可以使用 for 運算式,例如,將使用者提供的命令列引數逐一取出 :
一個執行的範例如下 :
args 是個字串陣列,for括號中的「arg<-args font="">」是一個產生器(Generator)語法,它會迭代整個陣列,每一次取出陣列中一個元素並設定給 arg,要注意的是,雖然沒有明確寫出,不過 arg 事實上是 val 所宣告的變數,你不可以在 for 運算式本體中改變 arg 的參考。雖然沒有必要,不過你要寫明 arg 是個 val 也是可以的. 在 for 運算式中也可以有 for 運算式,例如以下是個九九乘法表的顯示範例 : -args>
範例的運作原理是,1 to 9 這會產生一個 Range 物件(to 是 RichInt 上的方法),內含元素 1 到 9,for 運算式中的產生器語法逐一將元素 1 到 9 指定給變數。如果你要產生一個不包括 9 的 Range 物件,則可以使用 until 方法。例如 :
- for(i <- nbsp="" span="">1 until 9) { ->
- println(i) // 顯示 1 到 8
- }
- for(i <- nbsp="" span="">1 until (9, 2)) { ->
- println(i) // 顯示 1 3 5 7
- }
- for(i <- nbsp="" span="">1 to 9) { ->
- for(j <- nbsp="" span="">1 to 9) { ->
- // 作一些事...
- }
- }
- for(i <- nbsp="" span="">1 to 9; j <- nbsp="" span="">1 to 9) { ->->
- // 作一些事...
- }
- for(
- arg <- args="" nbsp="" span="">->
- if arg.endsWith(".txt")
- ) println(arg)
執行結果 :
在 for 中可以指定 中介變數(Mid-stream variable),例如 :
執行結果 :
雖然沒有在語法上指明,不過 file 實際上是個 val 所宣告的變數,所以你不可以再重新指定值給 file 變數. for 是個運算式,這代表著它可以有運算結果,運算結果會是個群集(Collection)物件,你可以在 for 運算式中使用 yield 來進行值的收集,for 運算結束傳回收集的結果,例如 :
執行結果 :
補充說明 :
* Tutorialspoint - Scala For Loops
* 起步走 - 內建控制結構 (if 運算式)
* 起步走 - 內建控制結構 (for 運算式)
* 起步走 - 內建控制結構 (while 迴圈)
* 起步走 - 內建控制結構 (match 運算式)
* 起步走 - 內建控制結構 (try 運算式)
沒有留言:
張貼留言