今天学习了下隐式转换的内容。所谓隐式转换,就是说,一个实例拥用1 2 3方法,但是当它需要4方法的时候,它没有,但是却可以通过转换成另一种类型来调用4方法,而且这种转换是自动转换不需要人为干预的,这种形为就叫做隐式转换。让我们通过实例来分析一下:

import java.io.File
import scala.io.Source

class RichFile(val file:File){
  def read = Source.fromFile(file.getPath).mkString
}

object Context{
  implicit def file2RickFile(file:File) = new RichFile(file)//将File转换成RichFile
}

object test59 {
  def main(args:Array[String]){
    import Context.file2RickFile
    println (new File("E:\\text.txt").read)
  }
}

首先,我们定义一个class RichFile,当的参数类型是File,类拥有read方法。

然后定义一个单例对像Context,它拥有一个隐式方法,file2RichFile,此方法会将File类型的file传给类RichFile,实例化成RichFile的对像。

然后在main方法中,我们导入此方法。

接着,我们新建一个File类型的对像,让它去调用read方法。但是此file没有read方法,这时,编译器会在main方法体内寻找可以实现read方法的方法,也就是file2RichFile,通过此方法,将file实例化成RichFile的对像,这时,RichFile类型的file就拥有了read方法,可以正常调用了。

分享下更多的scala资源吧:

1,《Scala深入浅出实战经典》http://pan.baidu.com/s/1pJnAUr5
2,《Spark纯实战公益大讲坛》http://pan.baidu.com/s/1sLeVk
3,《Docker公益大讲坛》http://pan.baidu.com/s/1hq0GztU
4,《spark亚太研究院spark公益大讲堂》http://pan.baidu.com/s/1i30Ewsd

5, DT大数据梦工厂spark和scala的所有视频、PPT和代码在百度云盘的链接:http://pan.baidu.com/share/home?uk=4013289088#category/type=0&qq-pf-to=pcqq.group

第59讲:Scala中隐式转换初体验的更多相关文章

  1. Scala 深入浅出实战经典 第65讲:Scala中隐式转换内幕揭秘、最佳实践及其在Spark中的应用源码解析

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  2. scala中隐式转换之总结

    1.隐式转换的时机: 1.当方法中的参数的类型与目标类型不一致时 2.当对象调用类中不存在的方法或成员时,编译器会自动将对象进行隐式转换   2.隐式解析机制 即编译器是如何查找到缺失信息的,解析具有 ...

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

    /** * Created by root * Description : 隐式转换调用类中本不存在的方法 */ class Person(name : String){ def getPersonN ...

  4. scala中隐式转换之隐式类

    /** * Created by root * Description :隐式类: * 1.其所带的构造参数有且只能有一个:并且构造器的参数是转换之前的对象 * 2.隐式类必须被定义在类,伴生对象和包 ...

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

    /** * Created by root * Description : 隐式值和隐式视图 */ object ImplicitTest { def main(args: Array[String] ...

  6. Scala 深入浅出实战经典 第61讲:Scala中隐式参数与隐式转换的联合使用实战详解及其在Spark中的应用源码解析

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ...

  7. Scala 深入浅出实战经典 第63讲:Scala中隐式类代码实战详解

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  8. Scala 深入浅出实战经典 第64讲:Scala中隐式对象代码实战详解

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  9. Scala 深入浅出实战经典 第60讲:Scala中隐式参数实战详解以及在Spark中的应用源码解析

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

随机推荐

  1. 最近自己封装了个JS脚本,用来创建和操作Table

    基于JQuery封装的Table操作脚本 /** 依赖JQuery **/ (function () { var Table = window.Table = function (rowCount, ...

  2. 【译】RabbitMQ:Topics

    在前面的教程中,我们对日志系统进行了功能强化.我们使用direct类型的交换器并且为之提供了可以选择接收日志的能力,替换了只能傻乎乎的广播消息的fanout类型的交换器.尽管使用direct类型的交换 ...

  3. java 学习写架构必会几大技术点

    java 学习写架构必会几大技术点 关于学习架构,必须会的几点技术 1. java反射技术 2. xml文件处理 3. properties属性文件处理 4. 线程安全机制 5. annocation ...

  4. Mac下 Octave 中plot 无法绘制

    在coursera看机器学习课程的时候用到Octave来做数据处理,但是装了之后用plot画图时就会报错: set terminal aqua enhanced title "Figure ...

  5. Git之VS2010实践

    对于我们经常在VS2010下编程的开发人员来说,强大的SCM工具Git貌似对我们很陌生.对于Git,我在我的另一篇博客<Git学习笔记>中已做过介绍,下面我再简单介绍一下Git在VS201 ...

  6. 怎么用sublime text 3搭建python 的ide

    安装目录的Packages目录下的python文件夹下的Python.sublime-build复制以下内容,保存 {"cmd": ["python", &qu ...

  7. 性能:CPU、Memory、耗电量

    1.自动 APP 性能测试需求讨论:https://testerhome.com/topics/3172 2.Android Studio中怎么使用DDMS工具?:http://www.cnblogs ...

  8. 接微软技术(c#,.net,vb.net, asp.net, sql server, bi, dw etc)项目

    最近闲赋在家,接微软技术的项目,主要有c#,.net,vb.net, asp.net, sql server, bi, dw etc,欢迎推荐.不好意思,借首页发一下.

  9. SQL数据库

    SQL是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言.在使用它时,只需要发出“做什么”的命令,“怎么做” ...

  10. 在 iTunes content中创建新的版本时,出现构建版本后面没有加号。

    老项目升级时,提交版本时,ipa已经上传成功到APP store,但是构建版本后面一直都没有加号,等了一夜还是没有反应 后来苹果发来一封邮件,意思是,我需要在plist文件中添加一个NSMicroph ...