文档章节

Scala下划线的几个用途总结

牧师-Panda
 牧师-Panda
发布于 2017/08/21 10:56
字数 332
阅读 22
收藏 0

1、作为“通配符”,类似Java中的*。如

import scala.math._

2、:_*作为一个整体,告诉编译器你希望将某个参数当作参数序列处理!

例如

val s = sum(1 to 5:_*)

就是将1 to 5当作参数序列处理。

3、指代一个集合中的每个元素。例如我们要在一个Array a中筛出偶数,并乘以2,可以用以下办法:

a.filter(_%2==0).map(2*_)

又如要对缓冲数组ArrayBuffer b排序,可以这样:

val bSorted = b.sorted(_

4、在元组中,可以用方法_1, _2, _3访问组员。如a._2。其中句点可以用空格替代。

5、使用模式匹配可以用来获取元组的组员,例如

val (first, second, third) = t

但如果不是所有的部件都需要,那么可以在不需要的部件位置上使用_。比如上一例中

val (first, second, _) = t

6、还有一点,下划线_代表的是某一类型的默认值。
对于Int来说,它是0。
对于Double来说,它是0.0
对于引用类型,它是null

7、用于将方法转换成函数,比如val f=sqrt _,以后直接调用f(250)就能求平方根了

此外,这篇博文整理的也非常好,很专业,大家也可以看看。

© 著作权归作者所有

牧师-Panda
粉丝 33
博文 146
码字总数 180044
作品 0
浦东
私信 提问
浅谈 Scala 中下划线的用途

Scala 作为一门函数式编程语言,对习惯了指令式编程语言的同学来说,会不大习惯,这里除了思维方式之外,还有语法层面的,比如 underscore(下划线)就会出现在多种场合,令初学者相当疑惑,...

大数据之路
2015/04/23
10.5K
3
Scala学习之类和属性篇(五):getter和setter方法

Scala会根据你定义属性时候使用的关键字:var,val,private来选择是否自动生成getter和setter方法。并且不允许你重写Scala的setter和getter方法。如果你要重写这两个方法你会看到如下编译错...

阿拉德大陆的魔法师
2016/12/10
1K
0
Scala之Partially Applied Function和Currying

Partially Applied Function 在开始之前,还是让我们说说”apply”这个术语怎么解释吧。在scala里,我们认为:把一个参数传递给函数的过程就叫apply, 在传统的编程语言里,传递参数和调用函数...

bluishglc
2016/04/02
0
0
Scala之若干细小问题汇总

Scala中下划线的应用场景一 Scala中下划线的应用场景二 identity方法的应用场景 本文原文出处: http://blog.csdn.net/bluishglc/article/details/52806646 严禁任何形式的转载,否则将委托C...

bluishglc
2016/10/13
0
0
Scala 的 yield 例子 (for 循环和 yield 的例子)

我看了《Programming in Scala》一书,仍然对 Scala yield 关键字的理解不甚清楚。起初我以为 Scala yield 的与 Ruby 的 yield 是一样,Ruby 中 yield 是被传入代码块的占位符。Scala 中的 ...

月下独酌100
2016/04/06
48
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
昨天
5
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
昨天
8
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
昨天
10
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
昨天
6
0
PHP+Ajax微信手机端九宫格抽奖实例

PHP+Ajax结合lottery.js制作的一款微信手机端九宫格抽奖实例,抽奖完成后有收货地址添加表单出现。支持可以设置中奖概率等。 奖品列表 <div class="lottery_list clearfix" id="lottery"> ......

ymkjs1990
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部