object ImplicitOps {
def main(args: Array[String]): Unit = {
implicitOps1
implicitOps2
implicitOps3
}
/**
* 隐士转换参数
* 就在正常的参数列表后面跟上一个(),()中的参数需要以implicit开头
* ()()----->闭包和柯里化的操作
* 闭包
* def bb(factor:Double) = (x:Double) => factory * x
* val t = bb(3)----->
* t(4)===> 3 * 4= 12
* 柯里化
* bb(3)(4)==>14
*/
def implicitOps3: Unit ={
class StudentSubmitReport{
def writeReport(content:String) = println(content)
}
implicit val stu = new StudentSubmitReport
def report(name:String)(implicit stu:StudentSubmitReport)={
stu.writeReport(name+" "+",你好")
}
report("张三")
}
//丰富现有api功能
def implicitOps2: Unit = {
class RichFile(val file:File){
/**
* read方法,读取主构造器file中的内容,成为String返回
* @return
*/
def read = Source.fromFile(file).mkString
}
implicit def file2RichFile(file:File) = new RichFile(file)
val file = new File("F:/wordCount.txt")
val str = file.read
println(str)
}
//隐士转换函数一
implicit def double2Int(num:Double) = num.toString
def implicitOps1: Unit = {
val x:Int = 3
val y:String = 3.5
println("y:" + y.length)
}
}
scala隐士转换
最新推荐文章于 2023-09-03 00:14:41 发布