博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
02Scala-函数定义、流程控制、异常处理入门实战
阅读量:7100 次
发布时间:2019-06-28

本文共 2070 字,大约阅读时间需要 6 分钟。

一 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

 

 

 

转载于:https://www.cnblogs.com/AllenNi2016/p/4697219.html

你可能感兴趣的文章
Stream 分布式数据流的轻量级异步快照
查看>>
人工智能将对就业结构产生重大影响
查看>>
mysql解决乱码问题
查看>>
设计模式之模板&迭代器&组合模式
查看>>
高考作文题“幸存者偏差”难哭了?这有份标准答案
查看>>
计算机网络基础知识.
查看>>
三星将收购美云服务公司Joyent 加强手机软件服务
查看>>
redis常用的数据类型及命令
查看>>
窄带高清赋能体育赛事,世界杯高清直播背后的技术变革
查看>>
KVM_虚拟化技术
查看>>
Unix下启动停止Oracle服务命令
查看>>
软银将推出虚拟现实观赛服务
查看>>
explain mysql性能优化
查看>>
你真的会写Hello World吗
查看>>
深入Spring Boot: 怎样排查 java.lang.ArrayStoreException
查看>>
React 列表、键值与表单
查看>>
阿里出新零售“王炸”:手淘和钉钉打通,7万导购已受益
查看>>
Hibernate小解惑
查看>>
Javascript 开启浏览器全屏模式
查看>>
Java代码规范
查看>>