一 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 |