package org.xj.scala.spark
/**
* 隐式转换
*/
class Basic7 {
}
class A {
}
class RichA(a: A) { //A中增加方法,隐式转换
def rich {
println("rich...")
}
}
object Basic7 extends App {
/**
* 隐式转换,为一些类增加方法
*/
implicit def a2RichA(a: A) = new RichA(a) //隐式转换 a-->RichA
val a = new A
a.rich
/**
* 隐式参数
*/
def testParam(implicit name: String) { //隐式参数
println(name)
}
implicit val name = "implicit !!!" //隐式参数赋值
//testParam //不需要传参数,testParam()会报错
//testParam("xxx") //调用赋值,非常的灵活,各种各样的写法
/**
* 隐式类
*/
implicit class Calculator(x: Int) { //为Int类型扩展,add方法
def add(a: Int): Int = a+1
}
//implicit xx.xx.Calculator
println(1.add(1)) //Int类型都能拥有扩展的add方法
}
/**
* 隐式转换
*/
class Basic7 {
}
class A {
}
class RichA(a: A) { //A中增加方法,隐式转换
def rich {
println("rich...")
}
}
object Basic7 extends App {
/**
* 隐式转换,为一些类增加方法
*/
implicit def a2RichA(a: A) = new RichA(a) //隐式转换 a-->RichA
val a = new A
a.rich
/**
* 隐式参数
*/
def testParam(implicit name: String) { //隐式参数
println(name)
}
implicit val name = "implicit !!!" //隐式参数赋值
//testParam //不需要传参数,testParam()会报错
//testParam("xxx") //调用赋值,非常的灵活,各种各样的写法
/**
* 隐式类
*/
implicit class Calculator(x: Int) { //为Int类型扩展,add方法
def add(a: Int): Int = a+1
}
//implicit xx.xx.Calculator
println(1.add(1)) //Int类型都能拥有扩展的add方法
}