zoukankan      html  css  js  c++  java
  • Scala隐式转换

    0 摘要

      对Scala隐式样转换的学习

    1 隐式转换概述

      适应场景,需要动态的增强一个类,现有的功能不能满足要求,

    2 类比Java

      Java:动态代理,加强现有的类的功能

    3 增强现有的类型

      就是说一个类调用另一个类中它自己没有定义的方法时,隐式转换可以自动将该类转换为另一类从而扩展自己的功能,然后调用该方法。

        有时候进行代码重构,要增强他的某项功能同时又不想做太大的改动。

      可以看到经过隐式转换后,Man这个对象具有了加强的功能fly()

     1 object ImplicitApp extends App {
     2   //定义隐式转换函数。Scala底层会进行隐式转换
     3   implicit def manToSuperman(man: Man): SuperMan = new SuperMan(man.name)
     4 
     5   private val kai = new Man("kai")
     6   kai.fly()
     7 }
     8 
     9 class Man(val name: String) {
    10   def eat(): Unit = {
    11     println(s"man[ $name ] eat")
    12   }
    13 }
    14 
    15 class SuperMan(val name: String) {
    16   def fly(): Unit = {
    17     println(s"SuperMan[ $name ] fly")
    18   }
    19 }

    4 理解

      我们经常引入第三方库,但当我们想要扩展新功能的时候通常是很不方便的,因为我们不能直接修改其代码。scala提供了隐式转换机制和隐式参数帮我们解决诸如这样的问题。

      

      

      

    我不喜欢这个世界,我喜欢你
  • 相关阅读:
    SQL CHECKOUT
    Adobe CS4 " Licensing for this product has expired " FIX!!!
    sizeof()用法汇总
    Command
    EXP_FULL_DATABASE,IMP_FULL_DATABASE,DBA,CONNECT,RESOURCE
    inet_addr函数处理IP地址需要注意的问题 (转)
    Oracle:外键关联导致数据无法删除
    三范式
    Wireshark界面上展开数据帧
    我的HTML学习记录(三)
  • 原文地址:https://www.cnblogs.com/truekai/p/11705839.html
Copyright © 2011-2022 走看看