普通的try-catch-finally Try{ } catch{//不加catch向上抛出异常 case  _=> } finally{//一般是资源关闭 } 普通的try-finally Try{ } finally{//一般是资源关闭 } try-finally,没有抛出异常,还是会报错,只不过会执行finally方法后报错,   一般用于无法显示预见处理的异常…
目录 一.Scala基础语法 (一) 变量.类型.操作符 1.变量申明 2.字符串 3.数据类型 4.操作符 (二)循环判断 1.块表达式 2.条件表达式 3.循环表达式 (三)方法和函数 1.方法 2.函数 3.方法和函数的区别 4.总结 二.Scala常用数据结构/集合 (一)Scala集合分类和继承体系 1.分类 2.继承体系 (二)数组 (三)元组 (四)List (五)队列 (六)Set (七)Map 一.Scala基础语法 === (一) 变量.类型.操作符 1.变量申明 ●Java…
Scala的求值策略有2种: call by value call by name 如何区分? 例子: def bar(x:Int,y: => Int) = def loop(): Int=loop bar(,loop)//依然能返回结果 //x参数是call by value,先求得loop值之后才能进行之后的计算. bar(loop,)//进入死循环 //y参数是call by name,不需要先进行表达式的值计算.…
1.try表达式 定义 try{} catch{} finally{} //例子 try{ Integer.parseInt("dog") }catch { }finally { println("always be printed") } 2.match表达式 exp match{ case p1 =>val1 case p2 =>val2 ... case _ => valm } val code= code match{ =>"…
一.Scala中的if是表达式** 1.定义方式 2.例子 二.for 的用法 1.定义方式: for{ x <- xs y=x+ ) }yield y 2.例子:…
一.Scala变量 共有3种变量修饰符: val: 可变 var: 不可变 lazy val: 第一次应用时才计算 二.Scala的数据类型 1)类型不匹配:高精度数值赋给低精度数据类型. 2)Unit相当于Java中的void. 3)string新特性(就是Java中的String,但在Scala中加入了新特性)…
在scala源码中有大量的:_*,其作用是把Array.list转换为参数列表,作为变长参数传入参数列表 例子: def sumx(a:Int*)={ a.sum } val a=Range(1,9) println(a.toString) println(sumx(a:_*))…
1.block 代码块也是表达式,其最终求得的值是最后一个表达式的值. {exp1;exp2} { exp1 exp2 } 2.function def funtionName(param:ParamType):ReturnType{ //function body: expressions } 3.例子 利用字符串插值特性:s"...${...}..." 省略花括号:…
1.纯函数 表示函数无副作用(状态变化). 2.引用透明性 表示对相同输入,总是得到相同输出. 3.函数是一等公民 函数与变量.对象.类是同一等级.表示可以把函数当做参数传入另一个函数,或者作为函数的返回值,甚至可以在一个函数中定义另一个函数. 4.高阶函数的定义 参数是函数,或者返回值是函数. 5.闭包 6.表达式求值 包括严格求值和非严格求值两种. 7.lazy求值 8.递归函数,尾递归函数 9.函数式编程的优点 生产效率高,易于推理,适用于并行编程.…
主要是基于2种情形 1) 提供读只取/只写入方法,不能随意读写 2)做赋值时变量控制,比如设定值的区间范围等 例子: object test{ def main(args: Array[String]): Unit = { val person = new person person.name_=("zhuSupper") println(person.name) } } class person{ private var _name:String=_ def name=_name d…