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提供了隐式转换机制和隐式参数帮我们解决诸如这样的问题。

      

      

      

    我不喜欢这个世界,我喜欢你
  • 相关阅读:
    程序打包
    MFC AfxMessageBox默认标题修改
    Json
    agsXMPP
    xmpp
    afxcomctl32.h与afxcomctl32.inl报错
    jQuery使用
    EChart使用
    C++ tinyXML使用
    electron之Windows下使用 html js css 开发桌面应用程序
  • 原文地址:https://www.cnblogs.com/truekai/p/11705839.html
Copyright © 2011-2022 走看看