scala implicit class

scala implicit classscala是一门scalable的语言,扩展性很强。 implicit 是scala的一个关键词,当它被用于class时,该类将被认为是implicitclass,它可以用来扩展现有类的行为和方法以下在scalaREPL中展示implicitclass的作用scala>”HAL”.increment:8:error:valueincrementi

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

scala 是一门 scalable 的语言,扩展性很强。 
implicit 是 scala 的一个关键词,当它被用于 class 时,该类将被认为是implicit class,它可以用来扩展现有类的行为和方法

以下在scala REPL中展示implicit class的作用

scala> "HAL".increment
<console>:8: error: value increment is not a member of String
          "HAL".increment
scala> implicit class StringImprovement(val s:String){
     | def increment = s.map(c=>(c+1).toChar)
     | }
defined class StringImproment scala> "HAL".increment
res1: String = IBM

Jetbrains全家桶1年46,售后保障稳定

String变量是没有increment方法的,所以一开始”HAL“.increment会报错。 
然后我们定义了一个implicit class StringImproment,其中带有一个increment方法,之后,String变量就带有该方法了,而我们不需要对String类做任何修改。


Implicit class 有这样的要求:

  • 必须定义在类或者对象或包对象(Package object)作用域内,而不能作为顶级类型。
  • 必须有一个primary constructor,并且只能接收一个参数(可以有多个implicit的参数)

在有implicit class之前,scala是用implicit method来支持该功能的。

可以参考这篇文章

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234239.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • sklearn库的使用_导入turtle库的方法

    sklearn库的使用_导入turtle库的方法Sklearn库是基于Python的第三方库,它包括机器学习开发的各个方面。机器学习的开发基本分为六个步骤,1)获取数据,2)数据处理,3)特征工程,4)机器学习的算法训练(设计模型),5)模型评估,6)应用。机器学习的算法一般分为两种:一种既有目标值又有特征值的算法称之为监督学习,另一种只有特征值的算法称之为无监督学习。而监督学习还可以继续细分为分类算法和回归算法。1)获取数据⑤Sklearn中获取数据集使用的包为Sklearn.datasets,之后可以接load_*和fetch_*从Skle

    2022年10月7日
    3
  • TFS 操作指令_TFR是什么的缩写

    TFS 操作指令_TFR是什么的缩写最近厂商来公司做项目,人员来来往往的很多,有人签出后没有签入就走了,只好想办法强制解除。从网上找到了解决办法,但照着做出了好多错,特此记录。1.强制解除被独占签出的文件必须使用命令工具tf.exe该文件在C:\ProgramFiles\MicrosoftVisualStudio10.0\Common7\IDE目录下,如果是64位系统则在C:\ProgramFiles(86)\Mi…

    2025年7月2日
    6
  • 什么是SSH 以及常见的ssh 功能

    什么是SSH 以及常见的ssh 功能什么是SSH?简单说,SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者TatuYlonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目…

    2022年7月13日
    14
  • PyCharm激活码永久有效PyCharm2020.3.3激活码教程-持续更新,一步到位

    PyCharm激活码永久有效PyCharm2020.3.3激活码教程-持续更新,一步到位PyCharm激活码永久有效2020.3.3激活码教程-Windows版永久激活-持续更新,Idea激活码2020.3.3成功激活

    2022年6月19日
    96
  • java 拦截器 判断url_Spring 的拦截器如何实现url转发

    java 拦截器 判断url_Spring 的拦截器如何实现url转发如何实现Spring的过滤器代码中改写请求的URL,并转发出去,注意,是转发,不是重定向packagecom.blog.inteceptor;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.springframework.web.servl…

    2022年8月31日
    7
  • element关于table拖拽排序问题

    element关于table拖拽排序问题element关于table拖拽排序问题

    2022年6月16日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号