Scala隐式转换之隐式参数(1)
来源:互联网 发布:云熙家具软件 编辑:程序博客网 时间:2024/05/21 08:47
函数或者方法可以带有一个标记为implicit
的参数。在这种情况下,编译器将会查找缺省值,提供给该函数或者方法。示例:
case class D(left:String,right:String)def quote(title:String)(implicit d:D) = d.left+title+d.right
可以用一个显示的D睇相来调用quote方法。这样:
quote("hello")(D("<<",">>"))//这其实就是柯里化
也可以略去参数列表:
quote("hello")
在这种情况下,编译器会查找一个类型为D的隐式值。这必须是一个被声明为implic的值。编译器将在如下两个地方查找这样的一个对象:
- 当前作用域所有可以用单个标识符指代的满足类型要求的val和def
- 与所要求类型相关联的类型的半生对象(相关联类型包括所要求类型本身以及他的类型参数)
比如,我们可以做一个对象:
object A { implicit val m = D("<<",">>") ……}
这样我们就可以从这个对象引入所有的值:
import A._
如此一来,两个标点符号就可以隐式的提供给quote函数了
如下代码是有两个相同类型的隐式参数是行不通的,因为编译器不知道怎么对应
def quote(title:String)(implicit left:String, right:String)
但是,隐式参数有什么作用呢?之后再去分析
0 0
- Scala隐式转换之隐式参数(1)
- scala 隐式转换参数
- scala学习之:隐式转换与隐式参数
- Scala入门之隐式转换与隐式参数
- Scala隐式转换之隐式参数
- Scala之隐式转换
- Scala之隐式转换
- Scala之隐式转换
- Scala之隐式转换
- Scala--隐式参数
- Scala进阶源码实战之八——隐式转换和隐式参数
- Scala入门学习之隐式转换和隐式参数
- scala的隐式转换之二
- Scala之旅-隐式转换
- scala基础之隐式转换
- scala-隐式转换
- scala 隐式转换
- Scala隐式转换
- C语言学习篇-1Hello, World!(编写、编译、链接、运行)
- android httpclient 设置超时
- 算法菜鸟Leetcode之旅-1
- hive的学习笔记2-hive源码的编译
- ListView优化整理
- Scala隐式转换之隐式参数(1)
- 开始写blog了
- html5--canvas学习
- 关于PDB与DLL
- 安装tushare库
- 第一篇博文
- gbk编码表
- Leetcode 172. Factorial Trailing Zeroes
- R语言实战之高级数据管理