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…只能匹配相同的类型
    隐式转换:
    image.png
    image.png
    image.png
    image.png
    image.png
    Actor Model
    image.png
    image.png

    注:关于list中的函数flatMap所做的功能:image.png

    image.png
    小计:在idea里面“”:双引号里面的内容代表的是String,’’:单引号里面代表的内容是Char
    image.png

    wordCount的原理
    image.png