scala中常用特殊符号详解
程序员文章站
2022-05-24 15:38:19
=>(匿名函数)
=> 匿名函数,在spark中函数也是一个对象可以赋值给一个变量。
spark的匿名函数定义格式:
(形参列表) =&g...
=>(匿名函数)
=> 匿名函数,在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()) } }
<- (集合遍历)
循环遍历,示例如下:
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+" "); }
++=(字符串拼接)
var s:string = "a" s+="b" println(s) s++="c" println(s)
:::三个冒号运算符与::两个冒号运算符
:::三个冒号运算符表示list的连接操作。(类似于java中的 list1.addall(list2))
::两个冒号运算符表示普通元素与list的连接操作。(类似于java中的list1.add(a)操作)
scala操作示例:
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())
-> 构造元组和_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) // 访问二元元组中第二个值
_(下划线)的用法
通配符
_可以起到类似于*作用的通配符:
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) }
:_* 作为一个整体,告诉编译器你希望将某个参数当做数序列处理
def main(args: array[string]): unit = { val s = sum(1 to 5:_*) //把1 to 5当作一个序列处理 println(s) } def sum(args: int*) : int = { var result = 0 ; for(s2 <- args) { result += s2 ; } result ; }
+=
为可变数组添加元素
val arrbuf1 = new arraybuffer[int]() arrbuf1+= 11 // 添加一个元素 println(arrbuf1)
-=
从map后者可变数组中移除相应的值
val arrbuf1 = new arraybuffer[int]() arrbuf1+= 11 // 添加一个元素 arrbuf1+= 12 // 添加一个元素 arrbuf1-= 12 // 删除一个元素 println(arrbuf1) var map = map(1 -> 1,2 -> 2,3 ->3 ) map-=1 println(map)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。