Scala 控制结构

  Scala内建的控制结构屈指可数,仅有if, while, for, match, try和函数调用而已。

  几乎所有的Scala控制结构都会产生某个值(while和 do while虽然不能产生有意义的值,但是也会返回Unit类型的值,称为unit value,写成 () )。unit value () 是Scala的Unit不同于Java的void的地方。通常赋值语句会返回 unit value ()。因此Java代码中经常用于文件读取的代码:

  var line = ""

  while((line = fr.readline()) != ""){

    println("Read: " + line)}

即使换成了Scala风格的也不能运行,因为line = fr.readline()作为赋值语句返回的是 (), 其和字符串 "" 比较总不相等,所以会陷入死循环。

For循环

  另外,在for循环中还可以加入过滤器filter, 其实就是if判断,例如: (注意两个条件之间要用分号隔开)

  for(file <- fileList

    if file.isFile;

    if file.getName().endWith(".scala")

  )println(file.getName())

  for循环也可以在一个语句中嵌套,例如:

  for(file <- fileList

    lilne <- fileLines(file))println(line)

Match匹配

  与Java的switch相比,match还是有些不同的,主要体现在以下几点:

1)任何类型的常量(或其它什么东西)都可以当成Scala里比较用的样本 (case),而不只是java中的整数类型和枚举常量;

2)Scala 的模式匹配没有break,但其实是隐含的。

3)match表达式也能产生值。。。很强大,可以将匹配得到的值作为返回值赋给其它变量。

 

抛弃break和continue

  Scala去掉了break和continue,因为函数式风格不需要。。。可用if代替每个continue,用布尔变量代替每个break。

 

变量范围

  Scala的变量的有效作用范围和Java很相似,唯一需要注意的地方是Scala允许在内部范围内定义与外部范围内名字相同的变量。内部变量被认为是遮蔽了外部的变量。例如:

  for(i <- 1 to 2){
    val a = 5
    val b = 10
    if(true){
      val a = 6
      println(a.toString())
      println(b.toString())
    }
    println(a.toString())
  }                           //输出:6 10 5 6 10 5

转载于:https://www.cnblogs.com/jiang-Xin/p/5731008.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值