scala中常用特殊符号详解
=>(匿名函数)
=>匿名函数,在Spark中函数也是一个对象可以赋值给一个变量。
Spark的匿名函数定义格式:
(形参列表)=>{函数体}
所以,=>的作用就是创建一个匿名函数实例。
比如:(x:Int)=>x+1,就等同于下面的Java方法:
publicintfunction(intx){ returnx+1; }
示例:
classSymbol{ varadd=(x:Int)=>x+1 } objecttest2{ defmain(args:Array[String]):Unit={ varsymbol=newSymbol printf(""+symbol.add.toString()) } }
<-(集合遍历)
循环遍历,示例如下:
varlist=Array(1,2,3,4) for(aa<-list){ printf(aa+"") }
上面代码类似于Java的代码:
int[]list={1,2,3,4}; for(intaa:list){ System.out.print(aa+""); }
++=(字符串拼接)
vars:String="a" s+="b" println(s) s++="c" println(s)
:::三个冒号运算符与::两个冒号运算符
:::三个冒号运算符表示List的连接操作。(类似于Java中的list1.addAll(list2))
::两个冒号运算符表示普通元素与list的连接操作。(类似于Java中的list1.add(A)操作)
scala操作示例:
valone=List(1,2,3) valtwo=List(4,5,6) valthree=one:::two println(three.toString()) valfour=7::three println(four.toString())
->构造元组和_N访问元组第N个元素
1.scala中元组含义:
- 元组是不同类型的值聚集线程的列表
- 通过将多个值使用小括号括起来,即表示元组
2.scala中元组与数组区别:数组中元素数据类型必须一样,但是元组数据类型可以不同。
示例程序:
valfirst=(1,2,3)//定义三元元组 valone=1 valtwo=2 valthree=one->two println(three)//构造二元元组 println(three._2)//访问二元元组中第二个值
_(下划线)的用法
通配符
_可以起到类似于*作用的通配符:
importorg.apache.spark.SparkContext._
指代集合中的每一个元素
例如遍历集合筛选列表中大于某个值的元素。
vallst=List(1,2,3,4,5) vallstFilter=lst.filter(_>3)
获取元组中指定下标的元素值
valss=(1,"22","333") println(ss._1)
使用模式匹配可以用来获取元组的组员
valm=Map(1->2,2->4) for((k,_)<-m)println(k)//如果不需要所有部件,则在不需要的部件使用_;本例只取key,因此在value处用_
成员变量而非局部变量添加默认值
vars:Int=_ defmain(args:Array[String]):Unit={ println(s) }
:_*作为一个整体,告诉编译器你希望将某个参数当做数序列处理
defmain(args:Array[String]):Unit={ vals=sum(1to5:_*)//把1to5当作一个序列处理 println(s) } defsum(args:Int*):Int={ varresult=0; for(s2<-args){ result+=s2; } result; }
+=
为可变数组添加元素
valarrBuf1=newArrayBuffer[Int]() arrBuf1+=11//添加一个元素 println(arrBuf1)
-=
从map后者可变数组中移除相应的值
valarrBuf1=newArrayBuffer[Int]() arrBuf1+=11//添加一个元素 arrBuf1+=12//添加一个元素 arrBuf1-=12//删除一个元素 println(arrBuf1) varmap=Map(1->1,2->2,3->3) map-=1 println(map)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。