1、Scala的函数定义
定义函数,需要给出函数的名称、参数和函数体,按照以下格式定义scala函数.
def 函数名称(函数输入参数类型): Unit{
//函数的实现提
}
1.2 没有输入参数的函数
def doWhile() {
var line = ""
do {
line = readLine()
println("Read: " + line)
} while (line != "")
}
def main(args: Array[String]) = {
doWhile
}
(1)可以看到输出语句的结尾没有以“;”结束,因为scala的设计者认为,多敲一次键盘没有必要,对开发者来说是痛苦的。 他不太赞成在语句的结束写 “;” , 但你也可以写 “;” 结束.
(2)代码解释:readLine读取键盘输入的内容,再由println输出。do while循环先执行一次,在判断while的条件是否满足,如果没有输出则停止,否则一直继续下去。
1.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
代码解释:参数x、y是Long类型,再由100赋值a,298赋值b,判断a是否不等于0,不等于0,则进入循环体,a赋值给temp,a对b取模,再把temp赋值给b,然后一直循环,当a等于0,推出循环,把b的值输出,可以看出最后结果是2.
2 流程控制
2.1 if
def main(args: Array[String]) = {
var file = "scala.txt"
if (!args.isEmpty) {
file = args(0)
}
println(file);
}
代码解释:如果有输入值,赋值给file,否则默认输出"scala.txt".
2.2 for
def main(args: Array[String]): Unit = {
for (i <- 1.to(10)) {
println("Number is: " + i)
}
}
代码解释:从1到10循环输出。<-代表从1开始
2.3 增强fordef main(args: Array[String]): Unit = {
val files = (new java.io.File(".")).listFiles()
for (file <- files) {
println("当前路径下有文件 -> "+file)
}
}
代码解释:打印当前目录下的文件
3 异常处理
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 {
}
}
代码解释:异常处理与Java类似,不同点在于catch是根据case类型匹配异常,因为99是奇数,模2不等于0,抛RuntimeException被Exception匹配,输出The exeception is N must be event.
def doWhile() {
var line = ""
do {
line = readLine()
println("Read: " + line)
} while (line != "")
}
def main(args: Array[String]) = {
doWhile
}
Scala 深入浅出实战经典(1-64讲)完整视频、PPT、代码下载:
百度云盘:http://pan.baidu.com/s/1c0noOt6
腾讯微云:http://url.cn/TnGbdC
360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2