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 函数的使用的主要内容,如果未能解决你的问题,请参考以下文章