Scala 令人发指的特殊符号

集合相关

+=和++=(字符串拼接)

  • +=方法还可以:为可变数组添加元素、为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
  • 可以有一个变量接受

你可能感兴趣的:(Scala 令人发指的特殊符号)