`
kane_xie
  • 浏览: 143160 次
社区版块
存档分类
最新评论

Scala入门(二):流程控制

阅读更多
 
最近在做一个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就会继续匹配。

 

2
1
分享到:
评论
1 楼 comsci 2015-08-28  



     欢迎进入中国工作流/BPM市场..............

相关推荐

Global site tag (gtag.js) - Google Analytics