集合相关
+=和++=(字符串拼接)
- +=方法还可以:为可变数组添加元素、为map添加新的值
- -=方法可以:为可变数组减去元素、为map移除相应的值
scala> var s:String = "a"
scala> s+="b"
scala> s++="c"
scala> s
res15: String = abc
scala> var a = Map(1->2,2->3)
scala> a += (3->4)
scala> a
res: scala.collection.immutable.Map[Int,Int] = Map(1 -> 2, 2 -> 3, 3 -> 4)
::(构造列表)
- 用法为x::list,其中x为加入到头部的元素,无论x是列表与否,它都只将成为新生成列表的第一个元素,也就是说新生成的列表长度为list的长度+1
- x::list等价于list.::(x)
scala> "A"::"B"::Nil
res0: List[String] = List(A, B)
- :::方法:只能用于连接两个List类型的集合
:+和+:(列表追加元素)
- :+方法:用于在尾部追加元素
- +:方法:用于在头部追加元素
- 只要记住冒号永远靠近集合类型
scala> List(1,2,3)
res1: List[Int] = List(1, 2, 3)
scala> res1:+2
res2: List[Int] = List(1, 2, 3, 2)
scala> 3+:res1
res4: List[Int] = List(3, 1, 2, 3)
++(连接两个Seq)
- 列表、集合、字符串、Map
- :::方法:只能用于连接两个List类型的集合
scala> val a = List(1,2,3)
a: List[Int] = List(1, 2, 3)
scala> a++List(4,5,6)
res7: List[Int] = List(1, 2, 3, 4, 5, 6)
<-(集合遍历)
var arr = Array(1,2,3,4)
for (i <- arr) {
println(i)
}
1
2
3
4
-> 返回一个二元元组
scala> var a = List(1,2,3)
a: List[Int] = List(1, 2, 3)
scala> var b = List(4,5,6)
b: List[Int] = List(4, 5, 6)
scala> val four = a -> b
four: (List[Int], List[Int]) = (List(1, 2, 3),List(4, 5, 6))
下划线_相关
通配符
1.import scala.math._
2.模式匹配
object MatchTest extends App {
def matchTest(x: Int): String = x match {
case 1 => "one"
case 2 => "two"
case _ => "many"
}
println(matchTest(3))
}
访问元组
- 元组的访问在scala中是从1开始
scala> val tup = (1,2,3)
tup: (Int, Int, Int) = (1,2,3)
scala> tup._1
res1: Int = 1
将方法转换成函数
- val f1 = m _
- 在方法名称m后面紧跟一个空格和下划线告诉编译器将方法m转换成函数,而不是要调用这个方法
递归调用
- 把里面每个元素提取出来
scala> sum(1 to 100: _*)
res: Int = 5050
指代集合中的每个元素
scala> var list = List(1,2,3,4)
list: List[Int] = List(1, 2, 3, 4)
scala> list.map(_*2)
res2: List[Int] = List(2, 4, 6, 8)
代表某一类型的默认值
- 加不加空格都可以
- 对于Int类型来说,它是0
- 对于Double来说,它是0.0
- 对于引用类型来说,它是null
scala> var a:Int = _
a: Int = 0
scala> var a:Int =_
a: Int = 0
其他
=>(匿名函数)
匿名函数定义:
- (形参列表) => {函数体}
- 左边的参数到右边的价格,比如:(x:Int) => x+1
- 可以有一个变量接受