变量
var:可变变量
val:不可变变量
函数
def:定义函数的关键字
函数类型:
(1) 方法:成员函数
(2) 局部函数
(3) 高阶方法:把函数作为输入参数,类似其他语言的迭代
(4) 函数字面量:源代码中的匿名函数(可作高阶方法中的参数,也可赋值给变量)
(5) 闭包:可以使用非参数、非局部变量函数字面体(如例子中的seed就是从作用域获得而非函数体获得的)
类
类是由字段(变量)和方法(函数)构成的。
类的分类
(1) 类
(2) 单例:只可以实例化一次的类,用关键字object来定义,如:
object DatabaseConnection{
def open(name: String): Int ={
...
}
}
(3) 样本类:使用case关键字修饰
使用new关键字就可以创建一个样本类的类实例
所有参数隐式获得val前缀,所以可以从外部访问参数
scala为样本类添加了方法toString、hashcode、equals、copy
模式匹配
用match关键字代替switch关键字,替代多层if-else语句,返回的是一个值
操作符
scala中运算符的本质都是操作符,如
val z = x+y
val z = x.+(y)
上述两句等价。
特质
特质类似类继承关系中的接口,对比如下:
比较1 | Java接口 | Scala特质 |
---|---|---|
区别 | 只有接口没有实现,继承接口必须实现接口方法 | 可以有方法和字段 |
比较2 | Java抽象类 | Scala特质 |
---|---|---|
区别 | 一个类只能继承一个抽象类 | 一个类可以继承多个特质 |
元组
元组是一个容器,存放两个或多个不同类型的元素,并且是不可修改的。
作用:把一些不相关的元素聚合在一起
补充:(1) 所有元素属于同一类型时,可以使用集合(数组、列表)
(2) 元素使不同类型但它们之间有联系时,可以使用类
Option类型
Option类型是一种数据类型,它可以在函数或方法中作为返回值,表示的值是可选的,要么有值(样本类Some的实例),要么无值(单例对象None的实例)。
记录 2019.09.09