scala中常用但其他语言不常见的符号含义
本文旨在介绍Scala在其他语言中不太常见的符号含义,帮助理解Scala Code。
随着我对Scala学习的深入,我会不断增加该篇博文的内容。
修改记录
----2016.11.23 新增scala中最神秘强大的下划线(_)用处
下面介绍Scala中的符号:
- :::三个冒号运算符:表示list的连接操作
val one = List(1,2,3)
val two = List(4,5,6)
val three = one:::two
输出结果为:three: List[Int] = List(1, 2, 3, 4, 5, 6)
- :: 两个冒号运算符:表示普通元素与list的连接操作
- _N下划线数字运算符:用于访问元组的第N个元素,N的取值从1开始。元组的元素访问方法与数组不同是因为元组的元素类型可以不同。
- -> 返回一个二元元组
val four = one -> two
返回:(List[Int], List[Int]) = (List(1, 2, 3),List(4, 5, 6))
- <- 用于遍历集合对象
- =>:Example:Int => String表示函数输入为Int型,返回String型,同Function(Int,String)
- ()=>:Example:() => T表示函数没有输入参数,但返回T
- Unit=>:Unit相当于无值的值,相当于C++中的Void
- _ 有很多含义
=> 把左边的东西改成右边的东西;可以看做创建函数实例的语法糖,这个运算符常见的有下面三种:
1、通配符
import org.apache.spark.SparkContext._
2、匿名函数
3、指代集合中的每一个元素。例如筛选列表中大于某个值的元素
val lst = List(1,2,3,4,5)
val lstFilter = lst.filter(_ > 3)
4、使用模式匹配可以用来获取元组的组员。
val m = Map(1 -> 2,2 -> 4)
for ((k,_) <- m) println(k) //如果不需要所有部件,则在不需要的部件使用_;本例只取key,因此在value处用_
5、代表某一类型的默认值
对于Int类型来说,它是0
对于Double来说,它是0.0
对于引用类型来说,它是null
- :_* 作为一个整体,告诉编译器你希望将某个参数当作数序列处理。
val s = sum(1 to 5:_*) //把1 to 5当作一个序列处理
- +=:为map类型变量添加元素
- -=:为map类型变量移除元素及其对应的值
参考文献
1 http://stackoverflow.com/questions/6951895/what-does-and-mean-in-scala
2 http://docs.scala-lang.org/tutorials/FAQ/finding-symbols.html
3 https://www.zhihu.com/question/21622725/answer/21588672
scala中常用但其他语言不常见的符号含义的更多相关文章
- scala中常用特殊符号
参考资料: scala中常用但其他语言不常见的符号含义 Scala学习六:Scala中的特殊字符 =>(匿名函数) 参考文档:scala => 用法 匿名函数 => 匿名函数,在Sp ...
- 从jvm来看,scala中的@究竟是个什么鬼?@模式匹配符号(scala 词法分析 语法分析常用)
从jvm来看,scala中的@究竟是个什么鬼? 我也是初步尝试来看jvm的类文件,又是初次来分析@,如不对的地方,请各位指正! 先看一下@ 是个什么? object TestScala { def m ...
- DSP中常用的C语言关键字
const Ø使用:const 数据类型 变量名: Ø作用:优化存储器的分配,表示变量的内容是常数,不会改变. Ø举例:const char tab[1024]={显示数据}; volatile(易变 ...
- 大数据学习day13------第三阶段----scala01-----函数式编程。scala以及IDEA的安装,变量的定义,条件表达式,for循环(守卫模式,推导式,可变参数以及三种遍历方式),方法定义,数组以及集合(可变和非可变),数组中常用的方法
具体见第三阶段scala-day01中的文档(scala编程基础---基础语法) 1. 函数式编程(https://www.cnblogs.com/wchukai/p/5651185.html): ...
- 实际项目开发过程中常用C语言函数的9大用法
C语言是当中最广泛的计算机编程语言,是所有计算机编程语言的祖先,其他计算机编程语言包括当前流行的Java语言,都是用C语言实现的,C语言是编程效率最高的计算机语言,既能完成上层应用开发,也能完成底层硬 ...
- Scala中_(下划线)的常见用法
Scala中_(下划线)的常见用法 地址:https://www.jianshu.com/p/0497583ec538
- C语言中常用计时方法总结
转自:http://blog.csdn.net/fz_ywj/article/details/8109368 C语言中常用计时方法总结 1. time() 头文件:time.h 函数原型:time_t ...
- (42)嵌入式项目中常用到的C语言技能总结
嵌入式项目中常用到的C语言技能 1.指针 .结构体. 枚举. 联合.数组.字符串.链表七个专题 2.结构体指针.结构体的多重嵌套[结构体中嵌套结构体.结构体中嵌套枚举.联合体.结构体中嵌套函数指针.一 ...
- 本文将介绍“数据计算”环节中常用的三种分布式计算组件——Hadoop、Storm以及Spark。
本文将介绍“数据计算”环节中常用的三种分布式计算组件——Hadoop.Storm以及Spark. 当前的高性能PC机.中型机等机器在处理海量数据时,其计算能力.内存容量等指标都远远无法达到要求.在大数 ...
随机推荐
- 数组去重的三种方法及from方法
直接上代码: var str="adbbckddwerivka"; var arr=str.split(""); console.log(arr); //ind ...
- yii 验证确认密码是否一致 【"compare",'compareAttribute'=>'password'】
array("surepassword","compare",'compareAttribute'=>'password','message'=>' ...
- 我和Cpp的第一次正式约会
今天是我和Cpp的第一次正式的约会,大一的时候学校开了Cpp课,可是那时候玩性未收,没有好好学习,而如今我主动约Cpp,是真的想跟他进一步走下去^_^,正在学习<C++ Primer>,每 ...
- 为什么Android AsyncTask的使用要遵循五大原则
引言 AsyncTask是一个围绕Handler和Thread而设计的助手类,封装了在工作线程中与UI交互的细节,只需要对应重写几个回调方法即可,并使得代码更加简洁,优雅.但要注意的是AsyncTas ...
- CodeForces 554B(扫房间)
CodeForces 554B Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u ...
- instancetype 与 id for Objective-C
instancetype.id.NSObject的区别 - simalone 1.instancetype只能用于方法的返回类型,而id用处和NSObject *类似. 2.instancetyp ...
- 理解Java(StringBuffer和StringBuilder)
StringBuffer可实现同步,StringBuilder线程不安全. 翻译自Java API英文文档 本质 StringBuffer 和 StringBuilder 均表示一个可变字符序列 这个 ...
- 【MySQL】SQL语法,between and 使用注意事项
业务代码中有条查询学生姓名的sql: select stu_name from stu_info where stu_id between id_1 and id_2; 估计当时一时恍惚,拼接sql时 ...
- 零零碎碎搞了一天最后发现是ruby版本问题
查来查去查不到问题,后来在stackoverflow看到: http://stackoverflow.com/questions/22352838/ruby-gem-install-json-fail ...
- 简化 Django
http://www.oschina.net/translate/simplifying-django 尽管Django的流行和普及, 一些开发者仍然认为她是一个过时的web开发框架, 仅仅适合内容丰 ...