scala 学习总结: implicit 函数的使用

Posted ywendeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scala 学习总结: implicit 函数的使用相关的知识,希望对你有一定的参考价值。

1、implicit 常见的用法

  关键字implicit用来标记一个隐式定义。编译器才可以选择它作为隐式变化的候选项。你可以使用implicit来标记任意变量,函数或是对象。
1. 使用implicit 可以实现——隐式参数

object ImplicitTest 
  /**
    * Implicit实现隐式参数
    */
    object Context
    implicit val str:String = "implicit parameter"
   
  object Parameter
    def print(context:String)(implicit prefix:String): Unit =
      println(prefix+":"+context)
    

  

  def main(args: Array[String]) 
    Parameter.print("Hello")("Scala")
    //在此使用隐式参数
    import Context._
    Parameter.print("Scala")
  


/***************************************************/
运行结果:
Scala:Hello
implicit parameter:Scala

2.使用implicit 可以实现—— 隐式转换

示例一:

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


object Context

  implicit def file2RichFile(f:File)=new RichFile(f)

object ImplicitDemo 

  def main(args: Array[String]) 
    /**
      * 在此使用了隐式转换
      */
    import  Context.file2RichFile
    println(new File("c://user//document.txt").read)
  


/********************************************************/
示例二:
class ImplicitTransform 
  def display(str:String)=println(str)

  /**
    *隐式转换函数
    */
  implicit def typeConvertor(arg:Int) =arg.toString
  implicit def typeConvertor(arg:Boolean)=if(arg) "true" else "false"


  def main(args: Array[String]) 
    display(123)
  

备注:
 1.隐式转换函数个函数名无关,只与传入参数类型和返回类型有关
 2.在同一个函数作用域下,不能同时有两个相同输入类型和返回类型的函数

以上是关于scala 学习总结: implicit 函数的使用的主要内容,如果未能解决你的问题,请参考以下文章

scala 隐式详解(implicit关键字)

scala 隐式详解(implicit关键字)

Scala 学习笔记之implicit

Scala 进阶—— implicit 用法:隐式参数

Scala Implicit 详解

Scala的implicit和implicitly