Scala是一个基于JVM的语言
Scala有六大
1、与java无缝整合
2、类型推断
3、支持分布式和并发Actor
4、Trait特质特性
5、模式匹配match
6、高阶函数
类和对象:
1、new类时除了方法不执行,其他都执行
2、object相当于java中的单例,定义的都是静态的,object是不以传参的,apply()方法
3、class可以传参,传参就有了默认的构造
4、重写构造时,第一行要先调用默认的构造
5、for
- 1 to 10(包含)
- 1 until 10(不包含)
- for(i<-1 to 10)
6、while….do….while….:i+=1,i-=1
7、if…else….
8、伴生类和伴生对象
方法和函数
1、方法定义
- 1、def方法定义
- 2、方法中传参要指定类型
- 3、方法可以自己推断返回类型。默认将方法体中最后一行计算的结果当做返回值返回
- 4、return返回值,要显示的声明方法体的返回值得类型
- 5、如果方法体可以一行搞定,可以将方法的花括号“{。。。}”去掉
- 6、如果方法名称和方法体之间没有等号“=”,无论方法体返回什么样的值都会被丢弃,返回unit
2、递归方法
- 1、都要显示写出返回值的类型
3、参数有默认值的方法
- def fun(X:Int=100)
- 可变长参数的方法 :def fun(x:String*)
4、匿名函数
- ()=>{}
- 可以赋值给一个变量,下次调用变量就是使用的这个匿名函数
6、偏应用函数
7、嵌套方法
8、高阶函数
- 函数的参数是函数
- 函数返回是函数
- 函数参数和返回都是函数
9、柯里化函数:高阶函数的简化
String:就是java中的String
集合:
1、Aarry
2、AarryBuffer
3、List :val list = List(String)(…)类似于case样例类直接不new
map,flatMap
4、ListBuffer
5、Set:可变和不可以变都是Set,但是要引包
6、Map:可变,不可变map.keys,map.values,map.get(key),map.get(key).getOrElse(…),map中的元素就是一个个的二元组
7、Tuple元祖可以放很多类型,最多支持放22个元素,tuple.prduceIterator,二元组中有一个swap翻转,元祖取值tuple.xx
Trait:相当于java中的接口和抽象类的结合,可以在Trait类定义方法的实现和不实现,变量和常量都行。Trait不可以传参,类继承Trait第一个关键字使用extends,之后使用with
macth:模式匹配,macth….case….,模式匹配中既可以匹配值,也可以匹配类型:case 123 =>{…},case i:Int=>{…},模式匹配,匹配上就自动终止了,模式匹配中会有值的转换,代表什么也不匹配不上,要写到最后。模式匹配中match…case…相当于一大行。
样例类:case class,样例类可以new也可以不new,样例类中的参数默认有getter,setter方法,对外可见
偏函数:PartialFunction[匹配的类型,匹配上传出的类型],偏函数相当于java中swith…case…只能匹配相同的类型
隐式转换:
Actor Model
注:关于list中的函数flatMap所做的功能:
小计:在idea里面“”:双引号里面的内容代表的是String,’’:单引号里面代表的内容是Char
wordCount的原理