Scala

  • _通配符定义的变量需要指定类型
  • 在immutable包下 list指长度和内容都不可变。array长度不可变,内容可变
  • 可变set中,remove的是元素。ListBuffe移除的是下标
  • 用object修饰的对象都是单例的,静态对象。通常会在伴生对象中 定义apply方法,用类名()的方式去调用,该语法作用是不需要用new关键字,更方便完成对类和实例对象的初始化
  • 特质和抽象类优先使用特质。一个类可以扩展多个特质,但却只能扩展一个抽象类。如果需要构造器还是得用抽象类
  • case class多例,必须有参数列表。自动添加与类名一致的构造函数(伴生对象也能实现),创建不需要new;参数默认为val;默认实现了一些方法;默认实现序列化,可以作为消息传递;支持模式匹配;     
  • 偏函数:不带mach的模式匹配,本质上是由多个case语句组成的针对每一种可能的参数分别进行处理的结构较为特殊的函数
  • 隐式转换不支持嵌套执行,使用场景:1.将某一类型转换成预期类型 (ArrayOps) 2.类型增强与扩展 (PairRDDFuncations bykey类算子增强)3.模拟新语法 (->)4.类型类
  • 泛型。和java一样,虚拟机中泛型的类型会被擦除,所以直接传[T]无法识别,需要用到隐式参数  类名:[T](implicit classTag:ClassTag[T] ),还有更加简单的写法,用到了上下届:类名[ClassTage:T]
  • 逆变(-T)和协变(+T)+T传入子类和本身,-T传入父类和本身
posted @ 2020-04-01 21:59  嘿呦  阅读(114)  评论(0)    收藏  举报