隐式类与隐式对象初体验
来源:互联网 发布:baselight调色软件 编辑:程序博客网 时间:2024/05/17 00:17
参考文献
scala 深入浅出实战经典 . 王家林场景
隐式类与隐式对象语法与简单实用实验
package com.scode.scala
import java.io.File
import scala.io.Source/** * author: Ivy Peng * function: 隐式类与隐式对象学习 * date:2016/03/28 7.15 * sum: * 1、作用:增强类或对象的功能 * 2、语法:implicit class CLASSNAME | implicit object OBJECTNAME */object Context_Helper2{ implicit class FileEnhancer(file:File) { def read2 = Source.fromFile(file.getPath).mkString } implicit class Op(x:Int) { def myAdd(second:Int)=x+second }}abstract class Template[T]{ def add(x:T,y:T):T}abstract class SubTemplate[T]{ def unit:T}object Implicit_Object_Class{ def main(args: Array[String]): Unit = { /* * 隐式对象 * 疑问:object 可以 extends 一个类 ? 神奇啊 */ implicit object StringAdd extends SubTemplate[String] { def add(x:String,y:String) = x + y def unit:String = "" } implicit object IntAdd extends SubTemplate[Int] { def add(x:Int,y:Int)=x+y def unit:Int = 0 } // ? 这里 SubTemplate 有 add方法,为什么编译不通过// def sum[T](xs:List[T])(implicit m:SubTemplate[T]):T=// { // value add is not a member of com.scode.scala.SubTemplate[T] // if(xs.isEmpty) m.unit else m.add(xs.head,sum(xs.tail))// } println(StringAdd.add("Hello", "Java")) println(IntAdd.add(3, 5)) /* * 隐式类 */ import Context_Helper2._ //powerfull println(1.myAdd(2)) println(new File("D:\\txt.txt").read2) }}
0 0
- 隐式类与隐式对象初体验
- C#体验编程技术 类与对象
- C#体验编程技术 类与对象
- 黑马程序员Java笔记——类与对象的初体验
- 黑马程序员3 os 我来了! 面向对象与os初体验
- ActionBar与ActionMode初体验
- XMLHTTP对象应用开发初体验
- XMLHTTP对象应用开发初体验
- XMLHTTP对象应用开发初体验
- Objective-C 面向对象初体验
- Python 初体验 之 面向对象
- coffee-script之面向对象初体验
- Javascript面向对象编程之一:初体验
- Objective-C 面向对象初体验
- Objective-c面向对象初体验
- 关于Java面向对象的初体验
- Python之面向对象初体验
- unity对象池工具PoolManager初体验
- mybatis1有感
- mybatis2有感
- mybatis3有感
- 一次虚拟机ping不通的问题---ifcfg-eth0中的prefix设置错误
- 专家解读两会新精神:五大关键词对中国很重要
- 隐式类与隐式对象初体验
- 隐式参数出体验
- 310. Minimum Height Trees
- 隐式转换最佳实践
- Qt中int转换成QString
- 张江-上海集成电路制造、设计、封装冠军
- [从头学数学] 第154节 圆
- 从时间相加去看类和对象
- extract things from excel files.