Scala 特殊符号含义
1. :::
:::(三个冒号)只用于连接两个 List 类型的集合
1  | val a = List(1, 2)  | 
2. ::
::(两个冒号)表示普通元素与 List 的连接操作
1  | val a = 1  | 
:: 是右侧对象的方法,即它是对象 b 的方法,而 :: 左侧的运算数是 :: 方法的参数,所以 1::b 的含义是 b.::(1)
3. =>
根据其不同数学含义,有不同的意义
3.1 值
匿名函数 or lamba 表达式,定义格式:(参数列表) => 函数体
(x: Int) => x + 1
3.2 类型
syntactic sugar 语法糖: 把需要的参数、类型、函数最简化,由编译器来解析(去糖化)
the type Int => String, is equivalent to the type Function1[Int,String] i.e. a function that takes an argument of type Int and returns a String.
1  | val a: Int => String = myint => "my int : " + myint.toString;  | 
以上四个方式的最终调用方式均为:a/b/c/d(参数)
其中 a b c 相当于在变量上赋予了一个函数体,而 d 本身就是一个函数
b 有两个参数,调用是必须有两个 Int 类型的参数
4. :+ 和 +:
:+ 方法:用于在尾部追加元素
+: 方法:用于在头部追加元素
冒号永远靠近集合类型
1  | scala> List(1,2,3)  | 
5. ++
用于连接两个 Seq,eg:列表、集合、字符串、Map etc
1  | scala> val a = List(1,2,3)  | 
6. <-
用于集合遍历
1  | var arr = Array(1,2,3,4)  | 
7. ->
用于返回一个二元元组
1  | scala> var a = List(1,2,3)  | 
8. ++=
用于字符串拼接,+= 为可变数组添加元素,可以用来加数值也可以用来拼接字符串,取决于等式左边是什么类型,但是 ++= 只能拼接字符串
1  | scala> var s:String = "a"  | 
9. _
9.1 通配符
- _ 可以起到类似于 * 作用的通配符:
 
1  | import org.apache.spark.SparkContext._ // 引入所有 jar 包  | 
- 模式匹配
 
表示完全不清楚的值的通配符
1  | object MatchTest extends App {  | 
9.2 指代集合中的每一个元素
1  | 遍历集合筛选列表中大于某个值的元素  | 
当做参数的占位符时,编译器有可能会没有足够的信息推断缺少的参数类型。
1  | val f = _ + _  | 
这时,可以使用冒号来指定类型
1  | val f = (_: Int) + (_: Int)  | 
9.3 获取元组中指定下标的元素值
1  | val ss = (1,"22","333")  | 
9.4 使用模式匹配可以用来获取元组的组员
1  | val m = Map(1 -> 2,2 -> 4)  | 
9.5 代表某一类型的默认值
加不加空格都可以
对于Int类型来说,它是0
对于Double来说,它是0.0
对于引用类型来说,它是null
1  | var s: Int = _  | 
9.6 :_* 作为一个整体,告诉编译器你希望将某个参数当做数序列处理
1  | def main(args: Array[String]): Unit = {  | 
10. +=
为可变数组添加元素
11. -=
从可变数组中移除相应的值
1  | var map = Map(1 -> 1,2 -> 2,3 ->3 )  |