分支
- Scala中任意表达式都是有返回值的, if-else的返回值取决于代码块中最后一行内容
val res1 = {
if (Double >= 6) {
println("Double大于6")
9+7
"aaa"
} else
"Double不大于6"
}//res="aaa" 或"Double不大于6"
//没有进入循环时返回值为Unit
- Scala中没有Switch分支,而是使用模式匹配来处理,后面会涉及到
循环
for循环
//start 表示从几开始循环
//end表循环结束
//start to end表示前后闭合,即[1,3]
for (i<- start to end){
print(i)
}
//从1输出到3
for (i<-1 to 3){
print(i)
}
//对集合进行遍历
val list=List("aa","bb","cc","dd")
for (elem <- list) {
print(elem)
}
循环的几个关键字:
to : 双向闭合, [1,3]
until: 左闭合, [1,3)
- for循环的循环守卫,即条件判断式
该条件判断式为true进入循环,false则跳过该次循环,类似于continue
//条件判断式: if i%2==0
for (i<- start to end if i%2==0){
print(i)
}
Scala中去掉了continue和break
- 引入变量
Scala中可以在for中添加变量
//新引入的变量和之前的要使用;隔开
for (i<- start to end; j=4-i; k=j+5){
print(i)
print(j)
println(k)
}
- 嵌套循环
for (i <- start to end; j <- 4 - i to end; k = j + 5) {
print(i)
print(j)
println(k)
}
//相当于
for (i <- start to end k = j + 5) {
for( j <- 4 - i to end){
print(i)
print(j)
println(k)
}
}
- 循环的返回值
//可以将for循环的结果返回
//将i进行处理并将结果放入一个Vector中并返回给res2, 需要使用yield关键字
val res2= for (i<- 1 to 10) yield {
if(i%2==0)
i*2
else
i
}
print(res2)
可以使用{}来替换for中的()即
//一个约定: for推导式只包含单一表达式时,使用(),包含 多个表达式时使用{},{}中可以使用换行来代替; val res2= for{i<- 1 to 10 j=i-10} yield { if(i%2==0) i*2 else i } print(res2)
- for循环的步长怎么控制
//Range(start,end,step)
//相当于i+=2
for (i <- Range(1,3,2)) {
print(i)
}
while循环
- 基本语法同java
- Scala不推荐使用While循环而是推荐使用for循环
- while没有返回值,或者说返回值是Unit