对于 for循环 差别 还是有点大 我们来看一下 scala中的for循环 写法 例如 我们想循环 1-10
for (i <- 1 to 10) {
println(i)
}
这样打印 1-10 for中 1 to 10 代表 从1 循环到10 i<- 代表 用 i来接收 1-10
其实这样的写法 要比 java更简洁
还有另一个关键词叫 until 我们来看一下
for (i <- 1 until 10) {
println(i)
}
这样打印出来的是 1-9
那么现在 to 和 until 的区别 就在于 to 就像java 循环中的 <= until就像java中的 <
接下来是循环 集合 其实循环集合 我们在java中更多在用 foreach 也就是增强for循环
在scala中 的 写法 其实和java很类似
val list = List(1,2,3,4)
for (i <- list) {
println(i)
}
这样就是循环list集合了 和java相比 只是把 : 换成了 <-
在此说明 如果 循环的同时需要判断 那么我们可以这样写
val list = List(1,2,3,4)
for (i <- list if(i%2==0)) {
println(i)
}
在循环的同时 我们只循环 偶数 也就是 除以2取余数为0的
这样打印出的就只有2和4了
那么在此大家有没有什么疑问呢? 我看到这的时候 在想 这个if条件 是怎样做的
是在循环中 不符合if条件的 是不参与循环了 还是继续参与循环 然后条件不成立就不执行代码块了呢
我们来试一下 先打印 1-10的累加
var flag=true;
var sum=0;
val list = List(1,2,3,4,5,6,7,8,9,10)
for (i <- list if (flag)) {
sum+=i;
}
println(sum)
这样打印的是55 没问题
接下来 我再试试
var flag=true;
var sum=0;
val list = List(1,2,3,4,5,6,7,8,9,10)
for (i <- list if (flag)) {
if(i==5)
flag=false;
sum+=i;
}
println(sum)
这样打印出来的是 15
也就是 还是从1-10进行循环 每次循环 都先判断 flag
其实scala可以使用这种方式跳出循环