if else
单分支
if(n == 0)println("n=0")
多分支
if(n == 0) {println("n=0")}else if(n < 0){println("-")}else {println("+")}
分支语句返回值
def main(args: Array[String]) :Unit={val n = -11val result:String =if(n == 0) {println("n=0")"n=0" //想要返回String类型,在后面添加String语句}else if(n < 0){println("-")"-"}else {println("+")"+"}}
def main(args: Array[String]) :Unit={val n = -11val result:Unit = //容许使用Unit来返回Stringif(n == 0) {println("n=0")"n=0"}else if(n < 0){println("-")"-"}else {println("+")"+"}}
For推导式
//范围遍历:从1遍历到10for (i <- 1 to 10){print(i)}//不包含10(边界)进行遍历for(i <- Range(1,10)){print(i)}for(i <- 1 until(10)){print(i)}
集合遍历
for(i <- Array(1,2,3,4)){print(i)}for(i <- List(1,2,3,4)){print(i)}for(i <- Set(1,2,3,4)){print(i)}
循环守卫
循环步长
```scala
步长为2遍历输出
for (i <- 1 to 10 by 2){
print(i)
} // 13579
倒序输出
for (i <- 30 to 10 by -2){
print(i +"\\")
} // 30\28\26\24\22\20\18\16\14\12\10\
for (i <- 1 to 10 reverse){ print(i +”\“) } // 10\9\8\7\6\5\4\3\2\1\
0.5遍历
for (i <- 1.0 to 10.0 by 0.5){ //此时使用to有可能精度缺失,使用 print(i +”\“) } // 1.0\1.5\2.0\2.5\3.0\3.5\4.0\4.5\5.0\5.5\6.0\6.5\7.0\7.5\8.0\8.5\9.0\9.5\10.0\
<a name="OoFfo"></a>## 循环嵌套```scala#Java写法for(i <- 1 to 5){for(j <- 1 to 5){println(i+ "&" + j )}}#Scala写法for(i <- 1 to 5;j <- 1 to 5){println(i+ "&" + j )}for{i<- 1 to 10j= 10 -i}{println(i+ "&" + j)}
循环返回值
val a = for(i <- 1 to 10) yield iprintln(a)//Vector(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)val b: IndexedSeq[Int]= for(i <- 1 to 10) yield i *2println(b)//Vector(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
while和do…while
在Scala是不推荐的 因为要在while循环体外定义一个变量
var a:Int= 10while(a >= 0){println(a)a -=1}
循环中断
Scala内置控制结构特地去掉了break和continue,是为了更好的适应函数式编程,推荐使用函数式的风格解决break和continue的功能,而不是一个关键字。Scala中使用breakable控制结构来实现break 和continue 功能。
使用breakable()
示例:
import scala.util.control._loop.breakable {for( a <- numList){println( "Value of a: " + a );if( a == 4 ){loop.break;}}}
