Scala中的特殊符号详解

1. =>(匿名函数)

=> 匿名函数,在Spark中函数也是一个对象可以赋值给一个变量。

Spark的匿名函数定义格式:
(形参列表) => {函数体}

所以,=>的作用就是创建一个匿名函数实例。

比如:(x:Int) => x +1 ,就等同于下面的Java方法:

public int function(int x) {
 return x+1;
}

例子:

class Symbol {
 var add = (x: Int) => x + 1
}
 
object test2 {
 def main (args: Array[String] ): Unit = {
 var symbol = new Symbol
 printf(""+ symbol.add.toString())
 }
}

2. <- (集合遍历)

循环遍历,示例如下:

var list = Array(1,2,3,4)
for (aa <- list) {
 printf(aa+" ")
}

上面代码类似于Java的代码:

int[] list = {1,2,3,4};
for(int aa : list) {
 System.out.print(aa+" ");
}

3.++=(字符串拼接)

var s:String = "a"
s+="b"
println(s)
s++="c"
println(s)

4. :::三个冒号运算符与::两个冒号运算符

  • :::三个冒号运算符表示List的连接操作。(类似于Java中的 list1.addAll(list2))
  • ::两个冒号运算符表示普通元素与list的连接操作。(类似于Java中的list1.add(A)操作)
例子: 
val one = List(1,2,3)
val two = List(4,5,6)
val three = one ::: two
println(three.toString())
 
val four = 7 :: three
 
println(four.toString())

5. -> 构造元组和_N访问元组第N个元素

1.scala中元组含义:

  • 元组是不同类型的值聚集线程的列表
  • 通过将多个值使用小括号括起来,即表示元组

2.scala中元组与数组区别:数组中元素 数据类型必须一样,但是元组数据类型可以不同。

例子:
val first = (1,2,3) // 定义三元元组
 
val one = 1
val two = 2
val three = one -> two
 
println(three) // 构造二元元组
 
println(three._2) // 访问二元元组中第二个值

在这里插入图片描述

6. _(下划线)的用法

  • 通配符
    _可以起到类似于*作用的通配符:
import org.apache.spark.SparkContext._
  • 指代集合中的每一个元素
例如 遍历集合筛选列表中大于某个值的元素:

val lst = List(1,2,3,4,5)
val lstFilter = lst.filter(_ > 3)
  • 获取元组中指定下标的元素值
val ss = (1,"22","333")
println(ss._1)
  • 使用模式匹配可以用来获取元组的组员
val m = Map(1 -> 2,2 -> 4)
for ((k,_) <- m) println(k) //如果不需要所有部件, 则在不需要的部件使用_; 本例只取key,因此在value处用_

在这里插入图片描述

  • 成员变量而非局部变量添加默认值
var s:Int=_
def main(args: Array[String]): Unit = {
 println(s)
}

6. +=

为可变数组添加元素

val arrBuf1 = new ArrayBuffer[Int]()
arrBuf1+= 11 // 添加一个元素
 
println(arrBuf1)

7. -=

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

val arrBuf1 = new ArrayBuffer[Int]()
arrBuf1+= 11 // 添加一个元素
arrBuf1+= 12 // 添加一个元素
arrBuf1-= 12 // 删除一个元素
 
println(arrBuf1)
 
var map = Map(1 -> 1,2 -> 2,3 ->3 )   //key -> value
map-=1
println(map)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值