Scala特殊符号含义

1. :::

(三个冒号)只用于连接两个List类型的集合

val a = List(1,2)
val b= List(3,4)
val c = a ::: b

2. ::

(两个冒号)表示普通元素与List的连接操作

val a = 1
val b = List(3,4)
val c= 1 :: b

::是右侧对象的方法,即它是对象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.

val a: Int => String = myint =>"my int: " + myint.toString

val b:(Int,Int) => String = (my1, my2) => "my int: " + my1.toString

var c = (x:Int, y:Int) => "my int: " + x + y

def d(x: Int): String = {
"my:" + x
}

以上四个方式的最终调用方式均为:a/b/c/d(参数)
其中 a b c 相当于在变量上赋予了一个函数体,而 d 本身就是一个函数
b 有两个参数,调用是必须有两个 Int 类型的参数

4. :+和+:

:+ 方法:用于在尾部追加元素
+:方法:用于在头部追加元素

冒号永远靠近集合类型

scala> List(1,2,3)
res2: List[Int] = List(1, 2, 3)

scala> res2:+4
res3: List[Int] = List(1, 2, 3, 4)

scala> 0+:res2
res4: List[Int] = List(0, 1, 2, 3)

5. ++

用于连接两个Seq,eg:列表、集合、字符串、Map etc

scala> val a = List(1,2,3)
a: List[Int] = List(1, 2, 3)

scala> a++List(4,5,6)
res5: List[Int] = List(1, 2, 3, 4, 5, 6)

6. <-

用于集合遍历

var arr = Array(1,2,3,4)
for (i <- arr) {
  println(i)
}

1
2
3
4

7. ->

用于返回一个二元元组

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 c = a -> b
c: (List[Int], List[Int]) = (List(1, 2, 3),List(4, 5, 6))

8. ++=

用于字符串拼接, +=为可变数组添加元素,可以用来加数值也可以用来拼接字符串,取决于等式左边是什么类型,但是++=只能拼接字符串

scala> var s:String = "a"
s: String = a

scala> s += "b"

scala> println(s)
ab

scala> s ++="c"

scala> println(s)
abc

9. _

9.1 通配符

1._可以起到类似*作用的通配符:

import org.apache.spark.SparkContext._ // 引入所有 jar 包

2.模式匹配
标识完全不清楚值的通配符

object MatchTest extends App {
  def matchTest(x: Int): String = x match {
    case 1 => "one"
    case 2 => "two"
    case _ => "many"
  }
  println(matchTest(3))
}

9.2 指代集合中的每一个元素

遍历集合筛选列表中大于某个值的元素

scala> val lst = List(1,2,3,4,5)
lst: List[Int] = List(1, 2, 3, 4, 5)

scala> val lstFilter = lst.filter(_ > 3)
lstFilter: List[Int] = List(4, 5)

做参数的占位符

val f = _ + _

也可以用冒号来指定类型

val f = (_: Int) + (_: Int)

9.3 获取元组中指定下标的元素值

val ss = (1,"22","333")
println(ss._1)

9.4 使用模式匹配可以用来获取元组的组员

scala> val m = Map(1->2, 2->4)
m: scala.collection.immutable.Map[Int,Int] = Map(1 -> 2, 2 -> 4)

scala> for((k,_) <- m) println(k)
1
2

//如果不需要所有部件,则在不需要的部件使用_;本例只取key,因此在value处用_

9.5 代表某一类型的默认值

加不加空格都可以
对于Int类型来说它是0
对于Double来说,它是0.0
对于引用类型来说,它是null

var s: Int = _ 
def main(args: Array[String]): Unit = {
    println(s)
}

9.6 _* 作为一个整体,告诉编译器你希望将某个参数当做数序列处理

var s: Int = _ 
def main(args: Array[String]): Unit = {
    println(s)
}

10. +=

为可变数组添加元素

11. -=

从可变数组中移除相应的值

var map = Map(1 -> 1,2 -> 2,3 ->3 )
map -= 1
结果:scala.collection.immutable.Map[Int,Int] = Map(2 -> 2, 3 -> 3)

相关推荐

  1. Scala特殊符号含义

    2024-05-10 06:50:08       11 阅读
  2. QT pro包含库文件目录符号含义

    2024-05-10 06:50:08       8 阅读
  3. Linux——常用特殊符号介绍

    2024-05-10 06:50:08       26 阅读
  4. c# 去掉字符串首尾的 特殊符号

    2024-05-10 06:50:08       11 阅读
  5. Scala学习笔记10: 特质

    2024-05-10 06:50:08       10 阅读
  6. PHP过滤Emoji表情和特殊符号的方法

    2024-05-10 06:50:08       16 阅读
  7. <span style='color:red;'>Scala</span>

    Scala

    2024-05-10 06:50:08      22 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-10 06:50:08       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-10 06:50:08       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-10 06:50:08       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-10 06:50:08       20 阅读

热门阅读

  1. Nacos如何支持服务发现和注册?

    2024-05-10 06:50:08       9 阅读
  2. TypeScript综合练习2(文本处理)

    2024-05-10 06:50:08       10 阅读
  3. 条形码获取商品信息

    2024-05-10 06:50:08       11 阅读
  4. 笨蛋学C++ 之 CMake的使用

    2024-05-10 06:50:08       10 阅读
  5. webpack进阶 -- 自定义Plugin,Loader封装&打包优化

    2024-05-10 06:50:08       9 阅读
  6. 【八股系列】vue的双向绑定原理是什么?

    2024-05-10 06:50:08       12 阅读
  7. ELK+kafka日志采集

    2024-05-10 06:50:08       8 阅读
  8. MySQL变量的定义与应用

    2024-05-10 06:50:08       10 阅读
  9. Node.js身份证实名认证接口、身份证识别API

    2024-05-10 06:50:08       12 阅读
  10. 第七十五章 锁定 Apache (UNIX® Linux macOS)

    2024-05-10 06:50:08       10 阅读
  11. Node.js发票ocr识别、发票查验接口

    2024-05-10 06:50:08       7 阅读