首页 > 其他 > 详细

Scala隐式转换

时间:2019-10-19 22:09:24      阅读:61      评论:0      收藏:0      [点我收藏+]

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

  

  

  

Scala隐式转换

原文:https://www.cnblogs.com/truekai/p/11705839.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!