Dream------scala--函数定义、流程控制、异常处理
一、函数的定义
1、新建工程
2、创建一个object
package com.wls.scala.hello
/**
* Created by wls on 2015年8月11日21:06:332.
*/
object ScalaBasics {
def main(args : Array[String]): Unit ={
}
}
def main(args : Array[String]) : Unit={}
上面这个就项目于java语言的main方法。(public static void main。。。)------>为什么可以没有static关键字呢
unit:实际上是这个函数的返回值,unit代表没有,相当于java的void。此处可以去掉,直接写成(def main(args : Array[String]) {})
3、创建一个函数
package com.wls.scala.hello /** * Created by wls on 2015年8月11日21:06:332. */ object ScalaBasics { //没有参数,没有返回值的普通函数 def dowhile(){ //定义一个变量,(val定义一个产量,注意scala声明参数的时候是没有java中的int、String之类的,他有自动识别类型的功能) //一般情况使用var、val var line ="" do{ line =readLine//获取控制台输入写成这样line =readLine()也是可以的 println("Read : "+line) }while(line !="") } //main 方法定义的函数 def main(args : Array[String]): Unit ={ //打印一句话,注意scala语法,在这里分号是可以省略的。(scala在设计的时候认为手指多按一个字符都是痛苦的事情) //println("This is scala") //调用dowhile函数 dowhile } }
4、一个有参数有返回值得函数
//有参数有返回值的函数 def looper(x : Long, y : Long ) : Long = { var a = x var b = y while(a !=0){ val temp = a println("temp"+temp) a = b%a b = temp } b } //main 方法定义的函数 def main(args : Array[String]): Unit ={ //打印一句话,注意scala语法,在这里分号是可以省略的。(scala在设计的时候认为手指多按一个字符都是痛苦的事情) //println("This is scala") //调用dowhile函数 //dowhile //调用looper //这个结果是2,(%,是取余操作),val不是不可变的吗?应该是100啊。注意val产量的生命周期,它声明在了函数体内部 //可以通过debug模式看的一清二楚 println(looper(100,298)) }
二、流程控制
1、if语句
def main(args : Array[String]): Unit ={ //如果参数不为空,则把第一个参数赋值给file,否则,把“scala.txt”赋值给file val file = if(!args.isEmpty) args(0) else "scala.txt" }
2、for循环
//打印1--10,,此处实际上1是个对象 ,可以写成1.to(10) for(i <- 1 to 10){ println("Number is :"+i) } //增强for循环,获取当前目录下的文件,并循环打印出来 val files = (new File(".")).listFiles() for(file <- files){ println(file) }
3、while do ...while
注意:写在object中的所有内容都是静态的(函数、变量、常量等) ,所以你的代码如果不是在方法区(def定义的函数)而是直接写在了object中,不用调用
也会执行(类似java的静态代码块)
object ScalaBasics { //类似java的静态代码块,无需调用,也会执行,常用于参数初始化 println("Hello wls") }
三、异常处理
//异常处理 //和java基本类似,值得注意的是异常的捕获使用的是case,也就是说可以写多个case,(而java是多个catch)匹配第一个,匹配上就抛出 val n = 99 val f = "Spark.txt" try{ val half = if(n%2==0) n/2 else throw new RuntimeException("N must be event") }catch { //Exception代表异常的类型,=>后面的代表异常怎么处理 case e :FileNotFoundException => {println("The exception is :"+e.getMessage)} case e :Exception => {println("The exception is :"+e.getMessage)} }finally { //释放一些资源啊什么的 }
相关来源:
DT大数据梦工厂,微信公众号是:DT_Spark,每天都会有大数据实战视频发布,请您持续学习。
相关资料:
scala深入浅出实战经典完整视频、PPT、代码下载:
百度云盘:http://pan.baidu.com/s/1c0noOt6
腾讯微云:http://url.cn/TnGbdC
360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码45e2