关闭

Scala隐式转换之隐式参数(1)

标签: scala隐式参数
288人阅读 评论(0) 收藏 举报
分类:

函数或者方法可以带有一个标记为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的值。编译器将在如下两个地方查找这样的一个对象:

  1. 当前作用域所有可以用单个标识符指代的满足类型要求的val和def
  2. 与所要求类型相关联的类型的半生对象(相关联类型包括所要求类型本身以及他的类型参数)

比如,我们可以做一个对象:

object A {
    implicit val m = D("<<",">>")
    ……
}

这样我们就可以从这个对象引入所有的值:

import A._

如此一来,两个标点符号就可以隐式的提供给quote函数了

如下代码是有两个相同类型的隐式参数是行不通的,因为编译器不知道怎么对应

def quote(title:String)(implicit left:String, right:String)

但是,隐式参数有什么作用呢?之后再去分析

0
0
查看评论

Scala入门到精通——第十八节 隐式转换与隐式参数(一)

本节主要内容 隐式转换简介 隐式转换函数 隐式转换规则 隐式参数 1. 隐式转换简介在scala语言当中,隐式转换是一项强大的程序语言功能,它不仅能够简化程序设计,也能够使程序具有很强的灵活性。要想更进一步地掌握scala语言,了解其隐式转换的作用与原理是很有必要的,否则很难得以应手地处理日常开发中...
  • lovehuangjiaju
  • lovehuangjiaju
  • 2015-08-05 21:09
  • 11567

Scala学习笔记6 - 隐式转换和隐式参数

===显式类型转换       正如之前所述的,scala中类型转换使用方法实现,以下是显式类型测试和显式类型转换的示例:           ...
  • guohecang
  • guohecang
  • 2016-08-04 11:53
  • 485

【Scala类型系统】隐式转换与隐式参数

隐式转换隐式转换是使用implicit修饰的带有单个参数的普通函数。这种函数将自动应用,将值从一种类型转换为另一种类型。 举例说明: 我们想将整数n转换为分数n/1, 定义implicit def int2Fraction(n: Int) = Fraction(n, 1) 在进行如...
  • JasonDing1354
  • JasonDing1354
  • 2016-02-27 21:35
  • 1169

Scala泛型、隐式转换和隐式参数、视图介绍、Scala中的上界、下界、结合柯里化进行隐式转换

二、泛型一、Scala泛型 1. 泛型介绍 泛型用于指定方法或类可以接受任意类型参数,参数在实际使用时才被确定,泛型可以有效地增强程序的适用性,使用泛型可以使得类或方法具有更强的通用性。泛型的典型应用场景是集合及集合中的方法参数,可以说同java一样,scala中泛型无处不在,具体可以查看sca...
  • toto1297488504
  • toto1297488504
  • 2017-07-01 23:25
  • 566

Scala隐式转换之隐式参数

/** * 隐式转换函数——隐式参数 */ class SingPen { def write(content: String): Unit = { println(content) } } object ImplicitDemo3 { // def exam(nam...
  • accptanggang
  • accptanggang
  • 2017-10-29 16:48
  • 80

Scala 隐式转换 隐式参数

隐式转换 所谓隐式转换函数(implicit conversion function)指的是那种以implicit 关键字声明的带有单个参数的函数 首先,看这个例子implicit def file2RichFile(from: File): RichFile = new RichFile(fr...
  • a1837634447
  • a1837634447
  • 2018-01-13 12:13
  • 31

第59讲:Scala中隐式转换初体验实战详解以及隐式转换在Spark中的应用源码解析学习笔记

第59讲:Scala中隐式转换初体验实战详解以及隐式转换在Spark中的应用源码解析学习笔记 隐式转换或隐式参数都是为了增强类库功能的方式。 在java/C#中增强类库功能的方式只是使用工具类或继承的方式,scala中是隐式转换或隐式参数的方式。 隐式转换可以把一个类的实例当作另一个类的实例。...
  • slq1023
  • slq1023
  • 2015-09-05 21:36
  • 579

Scala隐式转换和隐式参数

Scala隐式转换和隐式参数在scala语言中,隐式转换是一项强大的语言功能,他不仅能够简化程序设计,也能够使程序具有很强的灵活性。要想更进一步地掌握scala语言,了解其隐式转换的作用和原理是很有必要的,否则很难得以应手的处理日常开发中的问题。在scala语言中,隐式转换是无处不在的,只不过sca...
  • u010521842
  • u010521842
  • 2017-10-05 13:47
  • 358

scala(7)隐式转换 隐式变量 隐式类

隐式转换
  • cxh_python
  • cxh_python
  • 2016-03-27 08:18
  • 458

Scala 隐式类型之隐式参数

Scala 隐式参数介绍及示例,隐式转换和隐式参数结合示例。
  • yyywyr
  • yyywyr
  • 2016-01-03 17:48
  • 2354
    文章分类
    最新评论