scala中常用特殊符号
=>(匿名函数)
参考文档:scala => 用法 匿名函数
=>
匿名函数,在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个元素
scala中元组含义:
- 元组是不同类型的值聚集线程的列表
- 通过将多个值使用小括号括起来,即表示元组
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)
scala中常用特殊符号的更多相关文章
- scala中常用但其他语言不常见的符号含义
本文旨在介绍Scala在其他语言中不太常见的符号含义,帮助理解Scala Code. 随着我对Scala学习的深入,我会不断增加该篇博文的内容. 修改记录 ----2016.11.23 新增scal ...
- 在C/C++中常用的符号
C++中&和*的用法一直是非常让人头疼的难点,课本博客上讲这些知识点一般都是分开讲其用法的,没有详细的总结,导致我在这方面的知识结构格外混乱,在网上找到了一篇英文文章简单总结了这两个符号的一些 ...
- C++中常用特殊符号简介(& , * , : , :: , ->)
1."&"一般表示:引用,按位与,取地址. 如: class Complex { public: Complex operator+(Complex &c2) .. ...
- LaTeX中常用数学符号总结
博主一些小小的总结,以后会继续更的. 某个传送门. ⎝⎛•‿•⎞⎠⎝⎛•‿•⎞⎠⎝⎛•‿•⎞⎠ 1.左右一个$: 1+1=2 $1+1=2$ ($3$及以后的都需要$) 2.左右两个$: 1+1=2 ...
- (转)Scala中协变(+)、逆变(-)、上界(<:)、下界(>:)简单介绍
看源码的时候看到: trait ExtensionId[T <: Extension] { 没见过这个符号啊<: Scala上界(<:)和下界(>:) 1) U >: T ...
- 从jvm来看,scala中的@究竟是个什么鬼?@模式匹配符号(scala 词法分析 语法分析常用)
从jvm来看,scala中的@究竟是个什么鬼? 我也是初步尝试来看jvm的类文件,又是初次来分析@,如不对的地方,请各位指正! 先看一下@ 是个什么? object TestScala { def m ...
- shell中常用的特殊符号
在shell中常用的特殊符号罗列如下: # ; ;; . , / \ 'string'| ! $ ${} $? $$ $* "string"* ** ? : ^ $# $@ `co ...
- 大数据学习day13------第三阶段----scala01-----函数式编程。scala以及IDEA的安装,变量的定义,条件表达式,for循环(守卫模式,推导式,可变参数以及三种遍历方式),方法定义,数组以及集合(可变和非可变),数组中常用的方法
具体见第三阶段scala-day01中的文档(scala编程基础---基础语法) 1. 函数式编程(https://www.cnblogs.com/wchukai/p/5651185.html): ...
- Scala的常用小技巧
1."RichString.java".stripSuffix(".java") == "RichString" "http:// ...
随机推荐
- CC DGCD:Dynamic GCD——题解
https://vjudge.net/problem/CodeChef-DGCD https://www.codechef.com/problems/DGCD 题目大意: 给一颗带点权的树,两个操作: ...
- BZOJ1458 士兵占领 【带上下界网络流】
题目链接 BZOJ1458 题解 对行列分别建边,拆点,设置流量下限 然后\(S\)向行连边\(inf\),列向\(T\)连边\(inf\),行列之间如果没有障碍,就连边\(1\) 然后跑最小可行流即 ...
- POJ.2739 Sum of Consecutive Prime Numbers(水)
POJ.2739 Sum of Consecutive Prime Numbers(水) 代码总览 #include <cstdio> #include <cstring> # ...
- nodejs路径处理方法和绝对路径
1. 路径处理方法 __dirname 表示当前文件所在的目录的绝对路径__filename 表示当前文件的绝对路径module.filename ==== __filename 等价process. ...
- Django CRM系统
本节内容 业务痛点分析 项目需求讨论 使用场景分析 表结构设计 业务痛点分析 我2013年刚加入老男孩教育的时候,学校就一间教室,2个招生老师,招了学生后,招生老师就在自己的excel表里记录一下,每 ...
- 解决requests获取源代码时中文乱码问题
用requests获取源代码时,如果是中文网页,就可能会出现乱码,下面我以中关村的网站为例: import requests url = 'http://desk.zol.com.cn/meinv/' ...
- ACE反应器(Reactor)模式(4)
转载于:http://www.cnblogs.com/TianFang/archive/2006/12/18/596012.html 定时器的实现 通过Reactor机制,还可以很容易的实现定时器的功 ...
- Makefile中的 =,:=,?=,+= 的差异
在Makefile中常常遇见这几种等操作,总结一下具体区别. = 是最基本的赋值 := 是用右值覆盖左值 ?= 判断,如果左值没有被赋值过就赋以右值,否则,不做赋值动作 += 在左值后面连接右值 ...
- ES6中字符串的扩展
一.查找字符串 在ES5中,可以使用 indexOf 方法和 lastIndexOf 方法查找字符串: let str = 'hello world'; alert(str.indexOf('o')) ...
- 上下文路径request.getContextPath();与${pageContext.request.contextPath}
(1) request.getContextPath();与${pageContext.request.contextPath}都是获取上下文路径: 1. request.getContextPath ...