scala 中下划线的含义
1、Placeholder syntax(占位符,函数参数的占位符)
Multiple underscores mean multiple parameters, not reuse of a single parameter repeatedly.The first underscore represents the first parameter, the second underscore the second parameter,the third underscore the third parameter, and so on.
例如:
正确示范:
scala> (1 to 9).map(_*2)
res0: scala.collection.immutable.IndexedSeq[Int] = Vector(2, 4, 6, 8, 10, 12, 14, 16, 18)
如果要映射成一个元组的集合x=>(x,x*x) 比如 :1->(1,1),2->(2,4) ,3->(3,9) ... 9->(9,81)
可以这样:
scala> (1 to 9).map(x=>(x,x*x))
res2: scala.collection.immutable.IndexedSeq[(Int, Int)] = Vector((1,1), (2,4), (3,9), (4,16), (5,25), (6,36), (7,49), (8,64), (9,81))
这种情况下,就不能使用_来代替,因为多个下划线意思多个参数,而不是单个参数的重复使用
错误示范:
scala> (1 to 9).map(x=>(_,_*_))
<console>:8: error: missing parameter type for expanded function ((x$1) => scala
.Tuple2(x$1, ((x$2, x$3) => x$2.$times(x$3))))
(1 to 9).map(x=>(_,_*_))
所以这种情况下的使用条件是:参数在右侧只能出现一次,可以用_替换,多个参数多个_
2、Partially applied functions(部分应用函数)
A partially applied function is an expression in which you don’t supply all of the arguments needed by the function. Instead, you supply some, or none, of the needed arguments
例如:
对于如下sum函数定义
scala> def sum(a: Int, b: Int, c: Int) = a + b + c
sum: (a: Int,b: Int,c: Int)Int
可以有2种情况应用函数sum的部分功能
情况1:不带参数(None of arguments)
scala> val a = sum _
a: (Int, Int, Int) => Int = <function3>
scala> a(1, 2, 3)
res11: Int = 6
情况2:带入部分需要的参数(some of arguments)
scala> val b = sum(1, _: Int, 3)
b: (Int) => Int = <function1>
scala> b(2)
res13: Int = 6
3、其它含义
最难理解的可能就上面的2个用法了,其它下划线_的含义可以参考如下:
相关推荐
Scala中集合的使用 大学生 1. List 列表的使用 2. Set 集合的使用 3.Map 映射的使用 4. 元组的使用
scala> def m(x:Int,y:Int) = x*y m: (x: Int, y: Int)Int scala> val f = m _ f: (Int, Int) => Int = 2.集合中的每一个元素 scala> val list = List(1,2,3,4) list: List[Int] = List(1, 2, 3, 4) scala> val ...
scala编程 33章 中文pdf Scala编程实战 目录 第1章字符串. 11 第2章数值39 第3章控制结构.60 第4章类和属性.103 第5章方法147 第6章对象170 第7章包和导入.190 第8章特质200 第9章函数式编程214 第10 章集合242 第...
Scala_中文学习资料_含Scala_2.7.6_API.rar。Scala_中文学习资料_含Scala_2.7.6_API.rar。
scala.chm 中文学习 入门与进阶, 以及用到的构建工具与测试工具
scalgos, Scala 中的算法 目标学习 ScalaText 实现惯用函数 Scala 中常用算法没有外部依赖项( 除了测试的specs2 )良好的测试和文档建筑安装 git,Scala 和 sbt: brew install git s
scala编程中文版本(33章全)。大数据必备参考书箱。非常适合初学者的一本书,这本书的作者就是scala语言的创始人
programing in scala中文版的scala教程哦。
这是一个简单实用的scala集成mybatis数据库查询代码,简单明了
赠送jar包:scala-xml_2.11-1.0.1.jar; 赠送原API文档:scala-xml_2.11-1.0.1-javadoc.jar; 赠送源代码:scala-xml_2.11-1.0.1-sources...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
scala-2.12.3 scala-2.12.3 scala-2.12.3 scala-2.12.3
赠送jar包:scala-reflect-2.12.10.jar; 赠送原API文档:scala-reflect-2.12.10-javadoc.jar; 赠送源代码:scala-reflect-2.12.10-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
最新制作 scala 2.13.3 API 文档 Html离线版 Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。 Scala 运行在 Java 虚拟机上,并兼容现有的 Java 程序。
很大篇幅都放在,使用scala实现scala默认库文件的API中,通过对简单的函数式编程逻辑的介绍和实践,主要是实践,建立起来一个比较明晰的scala思维模式,或者叫函数式编程的思维模式。 2 无副作用的函数式编程,同时...
赠送jar包:scala-reflect-2.12.7.jar; 赠送原API文档:scala-reflect-2.12.7-javadoc.jar; 赠送源代码:scala-reflect-2.12.7-sources...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
中文版scala。《快学Scala》是一门以Java虚拟机(JVM)为目标运行环境并将面向对象和函数式编程语言的特性结合在一起的编程语言。你可以使用Scala编写出更加精简的程序,同时充分利用并发的威力。由于Scala运行于JVM...
Scala 语言规范 2.7版 + Scala 编程 两本中文pdf的电子文档。
赠送jar包:scala-compiler-2.12.7.jar; 赠送原API文档:scala-compiler-2.12.7-javadoc.jar; 赠送源代码:scala-compiler-2.12.7-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
scala 编译工具 sbt 安装包。 Little or no configuration required for simple projects Scala-based build definition that can use the full flexibility of Scala code Accurate incremental recompilation ...