22 scala 笔记

22 scala 笔记

更多干货

隐式类

import java.io.File

import scala.io.Source

object Context_Helper {

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

  implicit class Op(x: Int) {
    def addSAP(second: Int) = x + second
  }

}

object Implicits_Class {

  def main(args: Array[String]) {
    import Context_Helper._
    println(1.addSAP(2))
    println(new File("E:\\ctoedu.txt").read)

  }

}

隐式对象

abstract class Template[T] {
  def add(x: T, y: T): T
}

abstract class SubTemplate[T] extends Template[T] {
  def unit: T
}

object Implicits_Object {

  def main(args: Array[String]) {
    implicit object StringAdd extends SubTemplate[String] {
      override def add(x: String, y: String) = x concat y

      override def unit: String = ""
    }
    implicit object IntAdd extends SubTemplate[Int] {
      override def add(x: Int, y: Int) = x + y

      override def unit: Int = 0
    }
    def sum[T](xs: List[T])(implicit m: SubTemplate[T]): T =
      if (xs.isEmpty) m.unit
      else m.add(xs.head, sum(xs.tail))

    println(sum(List(1, 2, 3, 4, 5)))
    println(sum(List("Scala", "Spark", "Kafka")))

  }

}

隐式最佳使用

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

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

class File_Implicits( path: String) extends File(path)
object File_Implicits{
    implicit def file2RicherFile(file:File)= new RicherFile(file) //File -> RicherFile
}

object Implicits_Internals {
	def main(args: Array[String]) {
		println(new File_Implicits("E:\\ctoedu.txt").read)
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值