scala for循环 (循环守卫、 循环步长、循环嵌套 、引入变量、循环返回值、循环中断 Breaks)
scala所有的表达式都是有返回值的,但是返回值并不一定都是有值的,循环时可以增加条件来决定是否继续循环体的执行(建议第二种方式),yield关键字会把每次循环结果放置在一个新的结果中。若需要将for循环的结果作为返回值使用,需要采用。提供2种循环嵌套的方式(建议第二种方式)scala的集合可设定循环的增长幅度。......
·
1. 基本语法
语法:
for ( 循环变量 <- 数据集 ) {
循环体
}
object ScalaLoop {
def main(args: Array[String]): Unit = {
for ( i <- Range(1,5) ) { // 范围集合
println("i = " + i )
}
for ( i <- 1 to 5 ) { // 包含5
println("i = " + i )
}
for ( i <- 1 until 5 ) { // 不包含5
println("i = " + i )
}
}
}
注:字符串循环
for(i <- "hello"){
println(i)
}
实际处理逻辑:
2. 循环守卫
循环时可以增加条件来决定是否继续循环体的执行(建议第二种方式)
object ScalaLoop {
def main(args: Array[String]): Unit = {
for ( i <- Range(1,5) if i != 3 ) {
println("i = " + i )
}
for (i <- Range(1, 5)) {
if (i < 3) {
println(i)
}
}
}
}
3. 循环步长
scala的集合可设定循环的增长幅度
object ScalaLoop {
def main(args: Array[String]): Unit = {
for ( i <- Range(1,5,2) ) {
println("i = " + i )
}
for ( i <- 1 to 5 by 2 ) {
println("i = " + i )
}
}
}
4. 循环嵌套
提供2种循环嵌套的方式(建议第二种方式)
object ScalaLoop {
def main(args: Array[String]): Unit = {
for ( i <- Range(1,5); j <- Range(1,4) ) {
println("i = " + i + ",j = " + j )
}
for ( i <- Range(1,5) ) {
for ( j <- Range(1,4) ) {
println("i = " + i + ",j = " + j )
}
}
}
}
5. 引入变量
object ScalaLoop {
def main(args: Array[String]): Unit = {
for ( i <- Range(1,5); j = i - 1 ) {
println("j = " + j )
}
}
}
6. 循环返回值
scala所有的表达式都是有返回值的,但是返回值并不一定都是有值的,for循环返回值为Unit
若需要将for循环的结果作为返回值使用,需要采用yield关键字
,yield关键字会把每次循环结果放置在一个新的结果中
object ScalaLoop {
def main(args: Array[String]): Unit = {
val result = for ( i <- Range(1,5) ) yield {
i * 2
}
println(result)
}
}
注:
Java中的线程yield方法
,Scala调用
Thread.`yield`
7. 循环中断
scala是完全面向对象的语言,所以无法使用break,continue关键字进行循环中断或继续循环逻辑,而是采用了函数式编程的方式代替了循环语法中的break
Scala在循环中断时,会抛出异常改变代码逻辑;因此在使用break时,不能独立使用,需要结合breakable方法
import scala.util.control.Breaks
object T4 {
def main(args: Array[String]): Unit = {
Breaks.breakable(for (i <- 1 to 5) {
if (i == 3) {
Breaks.break()
}
println(i)
})
println("main执行")
}
}
优化:使用import scala.util.control.Breaks._
import scala.util.control.Breaks._
object T4 {
def main(args: Array[String]): Unit = {
breakable(for (i <- 1 to 5) {
if (i == 3) {
break
}
println(i)
})
println("main执行")
}
}
对于continue进行继续循环则仅需要通过if else条件判断处理
更多推荐
已为社区贡献7条内容
所有评论(0)