欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Scala入门(二):流程控制 博客分类: scala scala入门scala教程scala 

程序员文章站 2024-03-26 13:38:05
...
 
最近在做一个spark项目,顺便分享一下我的Scala入门过程。这一系列文章假定读者有一定的java或者其他面向对象编程语言基础。本文主要介绍Scala的流程控制和异常处理。

 

先上一段代码

注:ITEYE不支持Scala语法高亮,所以为了看起来方便,我选择作为Java来展示,但这是Scala代码,这点不用怀疑。。

 

object TestScala2 {
  def main(args: Array[String]): Unit = {
    //test 'for'
    for (i <- 1 to 10) println(i)
    //test 'dowhile'
    var line = ""
    do {
      line = StdIn.readLine()
      println(line)
    } while (line != "")
    //test 'if else'
    val a = (Math.random() * 10).toInt;
    val result = if (a % 2 == 0) "even:" + a else "odd:" + a
    println(result)
    //test 'try catch finally'
    try {
      //....
      throw new Exception("--exception message--")
    } catch {
      case e: Exception => println("the exception is " + e.getMessage)
    } finally {
      println("finally")
    }
  }
}

 

我们先看第一行for循环的代码,它是做一个从1到10的循环,将遍历的每一个结果赋值给i,再将i打印出来。“<-”是赋值符号,在Scala中非常常见。“1 to 10”表示1到10的循环,也可以写成“1.to(10)”,由于在Scala中一切皆对象,1是一个int类型的对象,它有to这个方法,并且接收另一个int对象作为参数。

 

在第二个例子中,将键盘的输入赋值给line并打印,如果line为空则跳出,否则继续循环接收输入。StdIn.readLine()表示接收键盘输入,StdIn这个类通过“import scala.io.StdIn”引入。while循环和dowhile循环类似。

 

第三个例子,判断一个随机数是奇数还是偶数,通过if else语句块实现,语法和Java类似,但有一点,Scala可以直接接收if else语句块的返回值。另外Math是java.lang这个包里的函数,Scala由于运行在jvm上,因此它可以直接调用Java。

 

最后一个例子是异常的处理。这里插一句,try catch finally语句块从语法上来说可以作为流程控制的手段,但从语义上来说,建议仅作为异常处理来使用,而不要用来控制流程的跳转,当然这是题外话了。我们看到在catch中,使用case来匹配捕获的异常,可以写若干个case,只要有一个能匹配上,即终止,不像Java中只要没有break就会继续匹配。