1.类
scala 的类大致可以分为三种,分别是 class ,object ,trait。
class 就是正常的和其他语言一样类
object 是为了弥补 scala 中没有静态属性而产生的单例类型。若使用 object 定义则不需要 new 也能使用里面的方法和属性,这等于就是将类直接实例化以此来顶替 static
trait 差不多就是一个接口。
具体实现代码如下:
1 | object demo2 { |
2.变量
scala 的变量声明分为 val 和 var 两种,var 声明的是可变变量,val 声明的是不可变变量。scala 的变量类型会自动匹配,所有在声明变量时不需要指定变量类型。如果要指定变量类型,则放在变量后以冒号分隔。
3.函数
scala 的函数有以下特点:
(1)如果没有参数,括号可以省略
(2)如果没有返回值,Unit可以省略,Unit代表没有返回值的函数类型
(3)如果函数内部只有一行代码,则大括号可以省略
(4)如果函数最后一行为返回值,则可以没有 return
(5)函数的返回值类型定义和变量相同,都是放在后面用”:”分隔
(6)利用元组可以做到一次返回多个值,元组元素(a)的提取使用:a._1
为第一个元素,以此类推
具体实例如下:
1 | object demo3 { |
4.高阶函数
高阶函数指以函数作为参数或返回值的函数,这很好地体现了 scala 面向对象的特点。高阶函数的具体实例如下:
1 | object demo4 { |
对比上述语句可以发现=>
的作用是指定作为参数的函数输入值类型和函数的返回值的类型。当函数作为参数传递时,传递目标是高级函数则传递的是函数,若传递目标是一般函数则传递的是函数的返回值
5.匿名函数
形如 (x:String)=>x+"demo"
的就是匿名函数,匿名函数可以用来直接给高阶函数传参。
1 | //fun1接受一个函数f,此函数参数为String,返回值也为String |
如果匿名函数是作为一个变量传递时需要指定匿名函数内变量类型,如果是直接用来处理数据的则可以不指定数据类型。
6.foreach
使用 foreach 来进行遍历操作,示例如下:
1 | val list = List(1,2,3,4,5) |
7.reduce
reduce 是一个聚合函数,用于对集合中的数据进行处理,reduce包含reduceLeft和reduceRight,reduce默认使用reduceLeft。所谓聚合就是将集合中的元素按照一定的顺序依次相加。具体示例如下:
1 | val list = List(1,2,3,4,5) |
8.<- (for循环)
此符号在 Scala 中主要放在循环语句中,用于将集合中的元素映射到变量中,类似于 python 中的 in 。示例如下:
1 | //单元素循环 |
9.列表操作
代码如下:
1 | //创建列表 |
9.1 列表添加元素
1 | //由于 scala 中的 List 添加元素是地址添加而不是值添加,因此每次添加都需要重新创建对象,效率不高, |
10.map集合
map 集合是存储键值对的数据类型,用法如下:
1 | //变量赋值 |
11.match 模式匹配
match 和 java 中的 witch 差不多,多用在 map 操作中,防止空指针异常。具体用法如下:
1 | val map = Map("java"->"scala","hadoop"->"Hive","Python"->"Scripy") |