Scala表达式和流程控制

if分支表达式

if/else表达式有值,这个值就是跟在if或者else之后的表达式的值。

单分支

​ 基本语法:if(条件表达式){执行代码块}

​ 说明:当条件表达式为true时,就会执行{}内的代码。

双分支

​ 基本语法:if(条件表达式){执行代码块1} else{执行代码块2}

​ 说明:当条件表达式成立,即执行代码块1,否则执行代码块2.

多分支

​ 基本语法:if(条件表达式1){执行代码块1}

​ else if (条件表达式2){执行代码块2}

​ ……

​ else{执行代码块n}

块表达式

在Scala中,{}块包含一些列表达式,其结果也是一个表达式,块中最后一个表达式的值就是块的值

Scala中的语句终止就是换行,也就是一行一个语句,此时便可以省略“;”,但是当一行有多条语句的时候,就应该使用“;”分隔。在表达式块中同样可以使用换行作为一条语句的分隔。

循环

在Scala中有for循环和while循环,用for循环比较多。

其中while循环和do…while循环和java中的语法结构基本一致,for循环稍有差异。

to和until

to和until主要是用于生成一个列表或者范围

i to j (包换i和j)

i until j(包含i,但不包含j)

for循环

scala中并没有像Java中普通for循环的语法结构,更像是高级for循环

语法格式:

for(变量 <- 集合) {…}

例如

object ForDemo {
  def main(args: Array[String]): Unit = {
    var sum = 0
    for (n <- 1 to 10 reverse){//reverse 进行倒置,即从10到1
      sum += n
      println(n)
    }
    println(sum)
  }
}

for循环嵌套

除了for循环的基本形态之外,Scala也提供了其他丰富的高级特性,比如

可以在for循环括号里同时包含多组 变量 <- 集合 结构,组之间用分号分隔

for (i <- 1 to 3; j <- 1 to 3) println(10 * i + j)

for循环的这种结构类似Java中的嵌套循环结构。

if循环守卫

可以为嵌套循环通过if表达式添加条件

for (i <- 1 to 3; j <- 1 to 3 if i != j) println(10 * i + j)

注意在if之前并没有分号

循环终止

Scala中没有continue和break,Scala中有三中方式来结束循环:

  1. 使用return语句来控制循环结束
  2. 使用循环结束的条件来进行控制
  3. 还可以使用breakable函数体来进行控制(导入break包,breakable包裹循环体)

异常控制和懒加载

Scala的异常处理和Java类似,一个方法可以通过抛出异常的方法终止相关代码的运行。

调用函数可以捕获这个异常作出相应的处理或者直接退出,在这种情况下,异常会传递给调用函数的调用者,依次向上传递,直到有方法处理这个异常

lazy:懒加载,被lazy所修饰的变量,之后当第一次被调用时候才会进行初始化,之前只是做了语法结构的正确判断

try {
  //lazy:懒加载
  //被lazy所修饰的变量,之后当第一次被调用时候才会进行初始化,之前只是做了语法结构的正确判断
  lazy val line = Source.fromFile("/Users/zx/scala/project/scala-learn/data/hello1.txt").mkString
  println(line)
  val a = 1/0
}catch {
  case fnfe: FileNotFoundException => {
    println(fnfe.getMessage)
  }
  case ame: ArithmeticException => {
    println(ame.getMessage)
  }
  case _ => {
    println("通用异常处理")
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值