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

      

      

      

    我不喜欢这个世界,我喜欢你
  • 相关阅读:
    webpack source map
    webpack 多页面应用打包
    webpack 资源内联
    webpack 移动端 CSSpx 自动转换成 rem
    webpack postcss插件
    css实现banner背景图上文字效果+
    css实现标题下划线效果
    Day 88 Django_DRF 序列化
    Day 87 VUE——xmall_front 案例
    Day 86 VUE——Vuex
  • 原文地址:https://www.cnblogs.com/truekai/p/11705839.html
Copyright © 2020-2023  润新知