大数据系列修炼-Scala课程64
2016-10-01 18:02
405 查看
大数据系列修炼-Scala课程64
核心内容:
1、Scala中隐式对象操作代码实战
1>所谓隐式对象,就是在object对象前面有implicit关键字
2>隐式对象可以作为隐式值进行使用
3>在Scala当中,标注类型的时候可以直接用类和特质的名字来引用其类型,要引用对象的类型,需要用对象的type成员来引用其类型,而不能直接用object的名字来引用其类型
实例程序1:
实例程序2:
注意:在上面的程序中,m是隐式对象,如果T是int,则使用IntAdd这个隐式对象,如果T是String,则使用StringAdd这个隐式对象。
实例程序3:自己编写的程序
深度思考1:下面的程序竟然不报错?????
如有问题,欢迎留言指正!
核心内容:
1、Scala中隐式对象操作代码实战
1、Scala中隐式对象操作代码实战 |
2>隐式对象可以作为隐式值进行使用
3>在Scala当中,标注类型的时候可以直接用类和特质的名字来引用其类型,要引用对象的类型,需要用对象的type成员来引用其类型,而不能直接用object的名字来引用其类型
实例程序1:
abstract class A { def fun():Unit } object B extends A { def fun() = println("Spark") //抽象方法被实现 } object App { def main(args:Array[String]):Unit = { def fun(obj:A) = obj.fun() fun(B) //静态对象可以做为参数进行使用 } }
实例程序2:
abstract class Template[T] { def add(x:T,y:T):T } abstract class SubTemplate[T] extends Template[T] //定义一个抽象的泛型类 { def unit:T } object App { def main(args:Array[String]):Unit = { implicit object StringAdd extends SubTemplate[String] { def add(x:String,y:String):String = x concat y def unit:String = "" } implicit object IntAdd extends SubTemplate[Int] //scala中单例对象也可以继承类 { def add(x:Int,y:Int):Int = x + y 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[String](List("Spark","Hadoop","Hbase"))(StringAdd)) //StringAdd隐式值可以省略 println(sum(List(10,20,30))(IntAdd))//IntAdd隐式值可以省略 } }
注意:在上面的程序中,m是隐式对象,如果T是int,则使用IntAdd这个隐式对象,如果T是String,则使用StringAdd这个隐式对象。
实例程序3:自己编写的程序
abstract class A { def fun():Unit } object App { def main(args:Array[String]):Unit = { implicit object B extends A { def fun() = println("Spark") } def g(str:String)(implicit obj:A) { println(str) } g("Spark")(B) g("Hadoop") }
深度思考1:下面的程序竟然不报错?????
object App { def main(args : Array[String]): Unit = { trait S1{def fun():Unit} implicit object S2 extends S1{ override def fun() = println("1111111222") } implicit var s1 = new S1{ override def fun() = println("66666666633")} def g(str:String)(implicit arg:S1) = arg.fun() g("Spark") } }
如有问题,欢迎留言指正!
相关文章推荐
- 大数据系列修炼-Scala课程32
- 大数据系列修炼-Scala课程46
- 大数据系列修炼-Scala课程62
- 大数据系列修炼-Scala课程09
- 大数据系列修炼-Scala课程35
- 大数据系列修炼-Scala课程16(1)
- 大数据系列修炼-Scala课程03
- 大数据系列修炼-Scala课程71
- 大数据系列修炼-Scala课程19
- 大数据系列修炼-Scala课程24(1)
- 大数据系列修炼-Scala课程52
- 大数据系列修炼-Scala课程11
- 大数据系列修炼-Scala课程63
- 大数据系列修炼-Scala课程02
- 大数据系列修炼-Scala课程08
- 大数据系列修炼-Scala课程21
- 大数据系列修炼-Scala课程48
- 大数据系列修炼-Scala课程68
- 大数据系列修炼-Scala课程50
- 大数据系列修炼-Scala课程67