scala学习-if,while,for,try用法7

1 if
scala中的所有控制结构都是有返回值得。
scala中的if和java中的都差不多。就是风格不同
scala变成风格如下:

object ContolTest  {
  def main(args:Array[String]):Unit={
    val filename= if(args.isEmpty) "default.txt" else args(0)
  }
}

java的风格如下:

 var filename_java="default.txt"
 if(!args.isEmpty)  filename_java=args(0)

2 while(不建议使用)
while也和java差不多的,但是scala中while,不返回值。而且在scala编程中避免使用while。1是大多数while会用到var,不太符合函数化编程的规范,2是因为 可能有bug。如下面功能,命令行读入,然后在显示功能:

 var line=""
   do{
     line=readLine()
     printf(line)
     }while(line!="")
  }

这个功能呢,很多人会写出如下形式:

 while((line=readLine())!=""){
       printf(line)
     }

这种情况,会有警告,说是总是为true,陷入死循环,这说明什么呢,因为给var赋值时,返回的结果和字符串做比较,永远是不等的:
这里写图片描述

3for
java和scala的for循环基本类似,语法不一样,scala案例,枚举一个文件夹中所有文件名:

val filename_ok=(new File(".")).listFiles
   for(file<-filename_ok){
     println(file)
   }

这里写图片描述

这是一种名为生成器的写法。且scala中是支持所有的集合类型。
3.2 for中的过滤
在scala中,可以设置过滤条件。如下,保留是文件的

 for(file<-filename_ok
       if file.isFile
       )
   {println(file)}

这里写图片描述
需要多个过滤条件的话,就使用多个if,这里每个if是 AND 的关系。
3.2使用for来生成新的集合
使用方式如下:

val files=for(file<-filename_ok
                 if file.isFile()
       ) yield file
   for(file<-files)
     println(file)

这里是把所有的文件结果,保存到files中。生成新的集合的使用方式是 for () yield body.
4 try的使用
额,也和java差不多,就是语法有些许差别。
直接抛出异常
这里写图片描述
值得注意的是,throw 也是有返回值的,当然了,这种写法,感觉没什么卵用.

  val h = 
     if(5%2==0) 5/2
     else 
       throw new RuntimeException("要偶数才可以")

捕获异常与finally的写法如下,和java一样,finally一般做一些清理工作

 val f   = new FileReader("test.txt")
   try{
     f.ready()
   }
   catch{
     case ex:FileNotFoundException=>//missing file
     case ex:IOException=>//I/O 错误
   } finally{
     f.close()
   }

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫二哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值