risc-v中文社区

 找回密码
 立即注册
查看: 1032|回复: 0

[原创] risc-v开发基础 Scala 隐式类---(19)

[复制链接]

347

主题

564

帖子

2237

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2237
发表于 2021-8-11 15:39:57 | 显示全部楼层 |阅读模式
scala中隐式转换和参数有多种语法形式,也有很多通用规则,本帖先说一个很容易理解的隐式类:
object implicitobj {
  implicit class A(arg:Int) {
  def trip = arg * arg * arg
}
}

object Main {
  def main(args: Array[String]): Unit = {
     val i = 10
     val tripi = i.trip
   }
}
这个例子很简单,稍微介绍就能理解:
类A与普通类有一个地方不相同,那就是定义的时候有implicit关键字修饰,它表示这个类A是一个隐式类,“构造参数”类型是Int,
这样就是说,当有一个Int类型变量出现时,本例中是val i变量,正常情况下,变量i是没有trip方法的,但本例中却能使用trip方法,
这就是因为隐式类的作用。
总结:
某种类型的数据,本来没有某种方法(method)的功能,但通过implicit class XXX(arg:这种类型){ def  method(...).....}定义隐式类,
在这个隐式类中定义这个method方法,则这种类型的数据就增加了这个功能。也就是锦上添花。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



Archiver|手机版|小黑屋|risc-v中文社区

GMT+8, 2024-5-3 21:06 , Processed in 0.013587 second(s), 17 queries .

risc-v中文社区论坛 官方网站

Copyright © 2018-2021, risc-v open source

快速回复 返回顶部 返回列表