scala中隐式转换之隐式转换调用类中本不存在的方法

/**
  * Created by root
  * Description :  隐式转换调用类中本不存在的方法
  */
class Person(name : String){
  def getPersonName = println("name = " + name)
}

object Type2Type{
  implicit def type2(a : ImplicitTest2) = new Person("xiaoming")
}

class ImplicitTest2

object ImplicitTest2 {
  import  Type2Type._
  def main(args: Array[String]): Unit = {
    // 通过隐式转换,使对象能调用类中本不存在的方法
    val test = new ImplicitTest2
    test.getPersonName   // 编译器发现test调用的方法不存在,此时编译器就会在作用域范围内查找能使其编译通过的隐式视图,
                        //  找到type2方法后,编译器通过隐式转换将对象转换成具有这个方法的对象,之后调用getPersonName方法
  }
}
时间: 2024-10-05 11:23:59

scala中隐式转换之隐式转换调用类中本不存在的方法的相关文章

scala中隐式转换之隐式值和隐式视图

/** * Created by root * Description : 隐式值和隐式视图 */ object ImplicitTest { def main(args: Array[String]): Unit = { // 隐式值 implicit val str = "hello" def fun(implicit s: String) = println(s) fun // 调用fun函数,编译器发现参数缺省,直接去作用域内查找隐式值,保证隐式值只有一个 // 隐式视图:隐式

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

作者:摇摆少年梦 配套视频地址:http://www.xuetuwuyou.com/course/12 本节主要内容 隐式参数中的隐式转换 函数中隐式参数使用概要 隐式转换问题梳理 1. 隐式参数中的隐式转换 前一讲中,我们提到函数中如果存在隐式参数,在使用该函数的时候如果不给定对应的参数,则编译器会自动帮我们搜索相应的隐式值,并将该隐式值作为函数的参数,这里面其实没有涉及到隐式转换,本节将演示如何利用隐式参数进行隐式转换,下面的代码给定的是一个普通的比较函数: object ImplicitP

scala学习笔记-隐式转换与隐式参数(18)

Scala提供的隐式转换和隐式参数功能,是非常有特色的功能.是Java等编程语言所没有的功能.它可以允许你手动指定,将某种类型的对象转换成其他类型的对象.通过这些功能,可以实现非常强大,而且特殊的功能. Scala的隐式转换,其实最核心的就是定义隐式转换函数,即implicit conversion function.定义的隐式转换函数,只要在编写的程序内引入,就会被Scala自动使用.Scala会根据隐式转换函数的签名,在程序中使用到隐式转换函数接收的参数类型定义的对象时,会自动将其传入隐式转

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

本节主要内容 隐式转换简介 隐式转换函数 隐式转换规则 隐式参数 1. 隐式转换简介 在scala语言当中,隐式转换是一项强大的程序语言功能,它不仅能够简化程序设计,也能够使程序具有很强的灵活性.要想更进一步地掌握scala语言,了解其隐式转换的作用与原理是很有必要的,否则很难得以应手地处理日常开发中的问题. 在scala语言中,隐式转换是无处不在的,只不过scala语言为我们隐藏了相应的细节,例如scala中的类继承层次结构中: 它们存在固有的隐式转换,不需要人工进行干预,例如Float在必要

Scala 系列(十三)—— 隐式转换和隐式参数

一.隐式转换 1.1 使用隐式转换 隐式转换指的是以implicit关键字声明带有单个参数的转换函数,它将值从一种类型转换为另一种类型,以便使用之前类型所没有的功能.示例如下: // 普通人 class Person(val name: String) // 雷神 class Thor(val name: String) { // 正常情况下只有雷神才能举起雷神之锤 def hammer(): Unit = { println(name + "举起雷神之锤") } } object T

Scala 学习笔记之隐式参数和隐式转换并用

隐式转换条件: 1. 当表达式类型与预期的类型不同时 2.当对象访问一个不存在的成员时 3.当对象调用某个方法,而该方法的参数声明与传入参数不相匹时. 隐式转换搜索范围: 1. 位于源火目标类型伴生对象中的隐式函数. 2. 位于当前作用域可以以单个标识符指代的隐式函数. 隐式参数条件: 函数中参数带有implicit 隐式参数搜索范围: 在当前作用域所有可以用单个标识符指代的满足类型要求的val和def. 与所要求类型相关联的类型的伴生对象. 隐式参数和隐式转换并用例子: class A { d

隐式转换与隐式参数

Scala提供的隐式转换和隐式参数功能,是非常有特色的功能.是Java等编程语言所没有的功能.它可以允许你手动指定,将某种类型的对象转换成其他类型的对象.通过这些功能,可以实现非常强大,而且特殊的功能. Scala的隐式转换,其实最核心的就是定义隐式转换函数,即implicit conversion function.定义的隐式转换函数,只要在编写的程序内引入,就会被Scala自动使用.Scala会根据隐式转换函数的签名,在程序中使用到隐式转换函数接收的参数类型定义的对象时,会自动将其传入隐式转

play scala 3 隐式参数和隐式域(implicit method and implicit field)

原文出处 http://alvinalexander.com/scala/scala-implicit-method-arguments-fields-example Microsoft Windows [版本 6.1.7601]版权所有 (c) 2009 Microsoft Corporation.保留所有权利. C:\Users\Bo>scalaWelcome to Scala version 2.10.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1

显式意图,隐式意图。。带值传递意图

显式意图1 显式意图2 带值传递意图1 带值传递意图2 隐式意图1 隐式意图2