本文旨在介绍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

http://docs.scala-lang.org/tutorials/FAQ/finding-symbols.html

https://www.zhihu.com/question/21622725/answer/21588672

scala中常用但其他语言不常见的符号含义的更多相关文章

  1. scala中常用特殊符号

    参考资料: scala中常用但其他语言不常见的符号含义 Scala学习六:Scala中的特殊字符 =>(匿名函数) 参考文档:scala => 用法 匿名函数 => 匿名函数,在Sp ...

  2. 从jvm来看,scala中的@究竟是个什么鬼?@模式匹配符号(scala 词法分析 语法分析常用)

    从jvm来看,scala中的@究竟是个什么鬼? 我也是初步尝试来看jvm的类文件,又是初次来分析@,如不对的地方,请各位指正! 先看一下@ 是个什么? object TestScala { def m ...

  3. DSP中常用的C语言关键字

    const Ø使用:const 数据类型 变量名: Ø作用:优化存储器的分配,表示变量的内容是常数,不会改变. Ø举例:const char tab[1024]={显示数据}; volatile(易变 ...

  4. 大数据学习day13------第三阶段----scala01-----函数式编程。scala以及IDEA的安装,变量的定义,条件表达式,for循环(守卫模式,推导式,可变参数以及三种遍历方式),方法定义,数组以及集合(可变和非可变),数组中常用的方法

    具体见第三阶段scala-day01中的文档(scala编程基础---基础语法)  1. 函数式编程(https://www.cnblogs.com/wchukai/p/5651185.html): ...

  5. 实际项目开发过程中常用C语言函数的9大用法

    C语言是当中最广泛的计算机编程语言,是所有计算机编程语言的祖先,其他计算机编程语言包括当前流行的Java语言,都是用C语言实现的,C语言是编程效率最高的计算机语言,既能完成上层应用开发,也能完成底层硬 ...

  6. Scala中_(下划线)的常见用法

    Scala中_(下划线)的常见用法 地址:https://www.jianshu.com/p/0497583ec538

  7. C语言中常用计时方法总结

    转自:http://blog.csdn.net/fz_ywj/article/details/8109368 C语言中常用计时方法总结 1. time() 头文件:time.h 函数原型:time_t ...

  8. (42)嵌入式项目中常用到的C语言技能总结

    嵌入式项目中常用到的C语言技能 1.指针 .结构体. 枚举. 联合.数组.字符串.链表七个专题 2.结构体指针.结构体的多重嵌套[结构体中嵌套结构体.结构体中嵌套枚举.联合体.结构体中嵌套函数指针.一 ...

  9. 本文将介绍“数据计算”环节中常用的三种分布式计算组件——Hadoop、Storm以及Spark。

    本文将介绍“数据计算”环节中常用的三种分布式计算组件——Hadoop.Storm以及Spark. 当前的高性能PC机.中型机等机器在处理海量数据时,其计算能力.内存容量等指标都远远无法达到要求.在大数 ...

随机推荐

  1. 数组去重的三种方法及from方法

    直接上代码: var str="adbbckddwerivka"; var arr=str.split(""); console.log(arr); //ind ...

  2. yii 验证确认密码是否一致 【"compare",'compareAttribute'=>'password'】

    array("surepassword","compare",'compareAttribute'=>'password','message'=>' ...

  3. 我和Cpp的第一次正式约会

    今天是我和Cpp的第一次正式的约会,大一的时候学校开了Cpp课,可是那时候玩性未收,没有好好学习,而如今我主动约Cpp,是真的想跟他进一步走下去^_^,正在学习<C++ Primer>,每 ...

  4. 为什么Android AsyncTask的使用要遵循五大原则

    引言 AsyncTask是一个围绕Handler和Thread而设计的助手类,封装了在工作线程中与UI交互的细节,只需要对应重写几个回调方法即可,并使得代码更加简洁,优雅.但要注意的是AsyncTas ...

  5. CodeForces 554B(扫房间)

      CodeForces 554B Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u ...

  6. instancetype 与 id for Objective-C

    instancetype.id.NSObject的区别 - simalone   1.instancetype只能用于方法的返回类型,而id用处和NSObject *类似. 2.instancetyp ...

  7. 理解Java(StringBuffer和StringBuilder)

    StringBuffer可实现同步,StringBuilder线程不安全. 翻译自Java API英文文档 本质 StringBuffer 和 StringBuilder 均表示一个可变字符序列 这个 ...

  8. 【MySQL】SQL语法,between and 使用注意事项

    业务代码中有条查询学生姓名的sql: select stu_name from stu_info where stu_id between id_1 and id_2; 估计当时一时恍惚,拼接sql时 ...

  9. 零零碎碎搞了一天最后发现是ruby版本问题

    查来查去查不到问题,后来在stackoverflow看到: http://stackoverflow.com/questions/22352838/ruby-gem-install-json-fail ...

  10. 简化 Django

    http://www.oschina.net/translate/simplifying-django 尽管Django的流行和普及, 一些开发者仍然认为她是一个过时的web开发框架, 仅仅适合内容丰 ...