码迷,mamicode.com
首页 > 其他好文 > 详细

02Scala-函数定义、流程控制、异常处理入门实战

时间:2015-08-03 06:29:39      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

一 Scala 函数的定义

 

 

技术分享
DT大数据梦工厂的微信公众号是DT_Spark,每天都会有大数据实战视频发布
Scala 深入浅出实战经典(1-64讲)完整视频、PPT、代码下载:

百度云盘:http://pan.baidu.com/s/1c0noOt6 

腾讯微云:http://url.cn/TnGbdC 

360云盘:http://yunpan.cn/cQ4c2UALDjSKy   访问密码 45e2 

 

 

按照以下格式定义scala函数.

def 函数名称(函数输入参数类型){

        //函数的实现提

}

demo

object Test2 {

     def main(args: Array[String]):Unit = {

          println("HelloWorld")

   } 

           

}

a)可以看到输出语句的结尾没有以“;”结束,因为scala的设计者认为,多大一个字符对开发者来说是痛苦的。

他不太赞成在语句的结束写 “;” , 但你也可以写 “;” 结束

b)如果没有返回值内容,可以把 Unit去掉。如下所示。

object Test2 {

     def main(args: Array[String]) = {

          println("HelloWorld") ;

   }            

}

2)没有输入参数的函数

  def doWhile() {

    var line = ""

    do {

      line = readLine()

      println("Read: " + line)

    } while (line != "")

  }

  def main(args: Array[String]) = {

    doWhile

   

  }

 默认会导入几个包,其中一个就有 Predef ,这里的包和java中的包是类似的,都是防止命名冲突,也就是说可以起相同的类名,但要放在不同的包下。

 

 

3)具有参数的函数定义

  def looper(x: Long, y: Long): Long = {

    var a = x

    var b = y

    while (a != 0) {

      val temp = a

      a = b % a

      b = temp

    }

    b

  }

  def main(args: Array[String]) = {

    println(looper(100, 298))

  }

结果

2

 

4) 有逻辑运算的函数

  def main(args: Array[String]) = {

    var file = "scala.txt"

    if (!args.isEmpty) {

      file = args(0)

    }

    println(file);

  }

   这段代码的是定义一个变量 file等于 "scala.txt",如果程序有输入值,就复制给变量file,如果没有输入值,就是用默认的名称"scala.txt".

  在写一段打印输出1到10集合里的元素代码。在for循环体内通过箭头( <- ) 给变量复制。

 def main(args: Array[String]): Unit = {

    for (i <- 1 to 10) {

      println("Number is: " + i)

    }

  }

得到如下输出结果:

Number is: 1

Number is: 2

Number is: 3

Number is: 4

Number is: 5

Number is: 6

Number is: 7

Number is: 8

Number is: 9

Number is: 10

 

 

       可以Scala逻辑型函数的定义还是比较简单的,要注意的一点就是,函数定以后,如果要调用就要放在Scala Object的main函数中,

因为main函数是Sclal Object的入口点,函数的运行都要从main开始。在从main函数调用定义的函数,这点看和C,C++和java都是相同的。

 

二异常处理

    在scala中的异常处理和java应,也要对可能发生异常的代码进行 try,catch捕获异常和finaly最终处理异常。但和java不同的是,它是通过case匹配异常。

   判断一个输入数是否是偶数,如果被2整除的余数不是0,就捕获异常。

 def main(args: Array[String]): Unit = {

    val n = 99

    try {

      val half = if (n % 2 == 0) n / 2

      else throw new RuntimeException("N must be event")

    } catch {

      case e: Exception => println("The exception is:" + e.getMessage)

    } finally {

    }

  }

运行代码,得到如下输出:因为99是奇数,当然会抛出抛出RuntimeException。

The exception is:N must be event

 

 

 

02Scala-函数定义、流程控制、异常处理入门实战

标签:

原文地址:http://www.cnblogs.com/AllenNi2016/p/4697219.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!