用if作流程控制的時候,包括單分支、雙分支、多分支。
好比java是這樣寫的。java
public static void main(String[] args) { int num = 10; if (num == 10) { System.out.println("equal 10"); } if (num > 5) { System.out.println("greater than 5"); } else { System.out.println("less than 5"); } if (num < 5) { System.out.println("less than 5"); } else if (num > 20) { System.out.println("greater than 20"); } else { System.out.println("greater than 5 and less than 20"); } }
Scala也是相似的:數組
def main(args: Array[String]): Unit = { val num = 10 if (num == 10) println("equal 10") if (num > 5) println("greater than 5") else println("less than 5") if (num < 5) println("less than 5") else if (num > 20) println("greater than 20") else println("greater than 5 and less than 20") }
可是Scala的表達式是有返回值的,因此他還能夠這樣:less
def main(args: Array[String]): Unit = { var num = 10 var x = if (num > 5) 5 println(x) // 5 var x1 = if (num > 20) 5 println(x1) //() var y = if (num > 5) { println("num") 5 } println(y) //5 var z = if (num > 20) 20 else 5 println(z) //5 }
Scala中for的語法爲:for (i <- 表達式/數組/集合)
,i是循環的變量
好比輸出0到5,在java是這樣寫的:函數
for (int i = 0; i < 5; i++) { System.out.println(i); }
在Scala是這樣寫的,to和until的區別是,to包括後面的數字,until不包括後面的數字.scala
for (i <- 0 to 4) println(i) for (i <- 0 until 5) println(i)
好比輸出數組的信息,java是這樣寫的:code
String[] arr = new String[]{"a", "b", "c"}; int length = arr.length; for (int i = 0; i < length ; i++) { System.out.println(arr[i]); } for (String str : arr) { System.out.println(str); }
在Scala是這樣寫的編譯器
val length = arr.length for (i <- 0 to length - 1) println(arr(i)) for (i <- arr) println(i)
好比在輸出0到5的時候,不輸出3,java是這樣寫的:it
for (int i = 0; i < 5; i++) { if (i != 3) { System.out.println(i); } }
scala是這樣寫的:編譯
for (i <- 0 to 4) { if (i != 3) println(i) }
也能夠這樣寫,把條件寫在for裏面:class
for (i <- 0 to 4 if i != 3) println(i)
二維數組的打印,java是這樣寫的:
for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { System.out.println("i=" + i + ",j=" + j); } }
scala是這樣寫的:
for (i <- 0 until 2; j <- 0 until 2) println("i=" + i + ",j=" + j)
while的用法,就和java那邊基本是同樣了,好比打印0到5的語句:
var num = 0 while (num < 5) { println(num) num += 1 }
在java中,咱們用break和continue對for或者while進行跳出循環或者跳出當前循環的。scala是用breakable這個高階函數來作的。
好比輸出0到4,當到3的時候跳出循環。
java是這樣寫的:
public static void main(String[] args) { for (int i = 0; i < 5; i++) { if (i == 3) { break; } System.out.println(i); } }
scala是這樣寫的:
import util.control.Breaks._ def main(args: Array[String]): Unit = { breakable( for (i <- 0 until 5) { if (i == 3) { break() } println(i) } ) }
好比輸出0到4,當到3的時候跳出當前循環。
java是這樣寫的:
public static void main(String[] args) { for (int i = 0; i < 5; i++) { if (i == 3) { continue; } System.out.println(i); } }
scala是這樣寫的:
import util.control.Breaks._ def main(args: Array[String]): Unit = { for (i <- 0 until 5) { breakable( if (i == 3) { break() }else println(i) ) } }