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


相关推荐

  • bigdecimal保留2位小数_bigdecimal保留两位小数显示00

    bigdecimal保留2位小数_bigdecimal保留两位小数显示00作者:RaphetS第一种方法使用DecimalFormat类举个例子,假如我们需要保留两位小数,我们可以这样写DecimalFormatdf=newDecimalFormat(“0.00”);测试如下:doubled=0.200;DecimalFormatdf=newDecimalFormat(“0.00”);System.out.println(df.format(d))…

    2022年9月23日
    4
  • Linux内核版本查看_mysql隐藏版本号

    Linux内核版本查看_mysql隐藏版本号1、使用uname命令查找Linux内核2、使用/proc/version文件查找Linux内核3、使用dmesg命令查找Linux内核版本4、使用hostnamectl命令查看Linux内核版本

    2022年10月13日
    0
  • Latex:入门教程

    Latex:入门教程http://blog.csdn.net/pipisorry/article/details/54571521总的来说,LaTex是一套排版系统,与word那种所见即所得对排版方式不太,用LaTex排版更像是写程序一样,将想要的排版效果用指令写出来,再通过LaTex编译成文档。简单来说,你只要按照要求撰写tex文件,就能够通过LaTex生成排版好的pdf文件。有些人可能听到写程序就头大了,其实使用…

    2022年7月26日
    6
  • Java cast_java concat方法

    Java cast_java concat方法在说ClassCastException之前,先介绍下引用类型转换;引用类型转换分为向上转型和向下转型两种;向上转型:多态本身是子类类型向父类类型向上转换的过程,这个过程是默认的;当父类引用指向一个子类对象时,便是向上转换;使用格式:父类类型变量名=new子类类型();向下转型:父类类型向子类类型向下转换的过程,这个过程时强制;一个已经向上转型的子类对象,将父类引用转为子类引用,可以使用强…

    2025年9月6日
    5
  • iOS跑步软件开发-从无到有

    iOS跑步软件开发-从无到有前言经过两个多月的开发与调试,全民星跑1.0.1终于上线了,首先要感谢曲总和洛洛爱吃肉的技术支持.全民星跑作为一个以跑步计步为主要功能的软件,骚栋在开发过程中实在是遇到了不少的坑,这篇博客会分为加速仪计步和跑步计步两个模块来说明,不过有一点我想先声明,因为人力资源有限,所以可能在计步的逻辑上跟不上咕咚或者是Keep这些大厂,望各位看官见谅.????????????功能规划一个App如何统计一个人的运动?这里主要有两种方式,一种是使用陀螺仪(或是加速仪)获取手机各个方向的加速度来统计用户的

    2022年7月26日
    5
  • 将char转换成int_c语言中int转char

    将char转换成int_c语言中int转char网络上现在能搜到的其他答案都是针对于类似chara=’2′;intb=a-‘0’;//valueofbis2这样的问题。那么如果问题是chara=-2;intb=a;//valueofbis?这样的问题呢?在一些编译器下会进行符号位扩展,直接保留符号,将a看作signedchar,b的值会是-2,

    2022年9月27日
    3

发表回复

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

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