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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vim解决中文乱码问题

    vim解决中文乱码问题

    2021年8月5日
    53
  • DEDECMS系统安全篇之移data目录到Web根目录以外听语音

    DEDECMS系统安全篇之移data目录到Web根目录以外听语音

    2021年9月25日
    50
  • java类加载器是什么_类加载器有几种

    java类加载器是什么_类加载器有几种类加载器是有了解吗?解析:底层原理的考察,其中涉及到类加载器的概念,功能以及一些底层的实现。答:顾名思义,类加载器(classloader)用来加载Java类到Java虚拟机中。一般来说,Java虚拟机使用Java类的方式如下:Java源程序(.java文件)在经过Java编译器编译之后就被转换成Java字节代码(.class文件)。类加载器负责读取Java…

    2022年8月11日
    6
  • jdbctemplate.query_query方法

    jdbctemplate.query_query方法Document.querySelectorAllSummaryReturnsalistoftheelementswithinthedocument(usingdepth-firstpre-ordertraversalofthedocument’snodes)thatmatchthespecifiedgroupofselectors….

    2025年7月6日
    1
  • 数据库端口号怎么修改_sqlserver查看sa密码

    数据库端口号怎么修改_sqlserver查看sa密码sqlserver端口如果出现问题,会直接影响sqlserver的登录,下面就教您sqlserver端口的更改方法,供您参考,让您不再为sqlserver端口问题而头疼。今天遇到一个问题,sqlserver无法登陆,到Services里看,服务没有起来。但是在启动Service时遇到问题说无法启动。去AdministrativeTools->EventViewer中查看了一下,…

    2022年8月31日
    3
  • ES6 数组方法归纳整理

    ES6 数组方法归纳整理ES6操作数组方法1.判断是否为数组 letarr=[1,2,3] console.log(Array.isArray(arr))//true console.log(Array.isArray([]))//true2.创建数组newArray()创建数组如果使用Array构造函数传入一个数值型的值,那么数组的长度length属性会被设置为该值; letitems=newArray(2); console.log(items.length);//2

    2022年6月9日
    32

发表回复

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

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