• 1. 讲师:孙帅(suns)
  • 2. Scala是什么Scala是什么 Scala是基于JVM的编程语言。Java是运行在jvm上的编程语言,java源代码通过jvm被编译成class文件,然后在os上运行class文件。Scala是运行在jvm上的编程语言,scala源代码通过jvm被编译成class文件,然后在os上运行class文件。 安装scala 从官网下载安装包(如:scala-2.11.6.msi)进行安装,在bin目录下,执行scala.bat,会运行scala解释器。 声明值和变量 var a = 12 //定义变量 val b = 23 //定义常量 注:在scala中,对于变量必须要初始化,不允许只声明而不初始化。
  • 3. Scala是什么有趣的语法特性 在scala的变量声明时,可以不指定类型,由解释器自己判断。 “superman ”*3 //表示字符串“ superman”反复输出3次 “superman ”*3 //实际上是字符串“ superman”调用方法*,传入的参数是3 使用IDE开发scala程序 创建scala工程,创建scala object,继承App。使用println(..)输出到控制台。 函数 函数在声明后,无论是否有“=”,都有返回值。当没有“=”的时候,表示返回值是Unit类型,Unit类型的值是()。当有“=”的时候,返回值是函数体中的最后一行的值。如果返回值类型强制指定为Unit类型,那么返回值必定是()。
  • 4. 控制结构判断 判断if 循环 循环(while、for) 基本循环结构,使用生成式“变量 <- 范围”表示
  • 5. 控制结构循环(while、for) 如果需要倒叙输出,后面加reverse 如果修改步长,可以使用守卫方法,即在生成式后面加一个boolean判断,符合条件的输出 修改步长更简单的方式如下,to后面使用括号,括号中第二个参数表示步长
  • 6. 控制结构循环(while、for) 支持类似于java的双重for循环,在scala中只需要一个for即可 使用for推导式,可以把结果保存起来
  • 7. 常用数据结构 数组 数组的两种声明方式,建议声明数组时指定类型。 访问数组元素时获取数组下标 数组Array类本身有很多非常方便的方法
  • 8. 常用数据结构 数组 变长数组ArrayBuffer,能够动态增加元素,也可以实现与Array的互转 映射 映射是对偶的集合。 声明映射
  • 9. 常用数据结构 映射 映射是对偶的集合。 a.声明映射 b.映射中的键值对称作对偶,用( , )表示 c.当映射中不存在key时,取值会报错,解决方案是使用 contains方法,或者getOrElse方法
  • 10. 常用数据结构 映射 默认使用的映射中的value是不可修改的,位于scala.collection.immutable包中。如果要修改,必须使用位于scala.collection.mutable包中的Map类型 如果要迭代每一个对偶,还是使用for循环 元组 元组使用()表示的数据结构
  • 11. 常用数据结构 元组 元组使用()表示的数据结构 还可以使用模式匹配访问 使用场景非常有限,用于函数返回值不止1个的情况下
  • 12. 类类的定义 类的字段 类的方法
  • 13. 类构造器 在定义类时可以定义主构造器。主构造器可以同时声明字段。 辅助构造器的名称是this,不能定义字段,第一行必须调用主构造器。
  • 14. 对象定义 Object是一种类型,与class非常相似。 Object可以提供java中的静态字段、静态方法的功能。 伴生对象
  • 15. 继承 抽象类 抽象类中不一定有抽象方法或者抽象字段。 有抽象字段或者抽象方法的类一定是抽象类。 子类在实现抽象字段或者抽象方法的时候,不使用override。 覆盖方法 覆盖的时候,一定使用override。 覆盖字段 抽象字段一定要有类型描述。 覆盖的时候,一定使用override。
  • 16. 特质说明 特质类似于java中的接口。从语法上讲,与类几乎,只有一点,就是特质的构造器没有参数。特质中可以有抽象的字段或者方法,也可以没有。 混入 特质可以实现类的混入。 叠加在一起的特质实现混入,可以级联调用。 继承特质
  • 17. 特质继承类 自身类型 自身类型只允许符合自身类型的子类才可以继承该特质。
  • 18. 操作符 二元操作符 一元操作 一元操作符相当于调用 a.unary_操作符
  • 19. 操作符 定义操作符 练习题 apply和update方法 f(arg1, arg2, .....)是函数调用方法,用着非常好。我们可以把这种使用方法推广出去。如果f是类的实例,相当于调用类的apply(...)方法。
  • 20. 20操作符 apply和update方法 赋值操作f(args1, arg2,.....) = value也是函数的调用方法。如果f是类的实例,相当于调用类的update(args1,args2,....,value)方法。
  • 21. 21操作符 apply和update方法 apply(...)方法也可以用于伴生对象中。
  • 22. 22高阶函数函数可以赋给变量 首先,在scala中,函数是一等公民。 匿名函数 函数的形式是 (形参列表)=>返回值类型
  • 23. 高阶函数函数作为形参 既然函数可以作为参数,那么在调用的时候我们会传递函数的变量过去。那么,我们可以省略函数的定义,在调用的时候直接把函数的实现(即匿名函数)过去。
  • 24. 高阶函数函数作为形参 对于只有一个参数的,可以只写函数体。 fun3(a=>a+2) 如果形参只有一个,可以在函数体中使用_代替。 fun3(_+2) 函数作为形参的终极版本。
  • 25. 高阶函数把匿名函数放在函数体内