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


相关推荐

  • 数组与List的相互转换

    数组与List的相互转换1.List转换为数组直接调用ArrayList中的toArray方法就可以实现。List接口中,toArray有两个重载的方法:Object[]toArray();T[]toArray(T[]a);可见toArray可以用无入参的方式调用,返回一个Object数组;也可以用指定返回类型的方式调用,返回一个指定类型的数组。@Testpublicvoidtest()

    2022年6月18日
    28
  • eclipse 导入Java项目「建议收藏」

    eclipse 导入Java项目「建议收藏」偶们公司的这个老项目真的是让人头疼,师父们给偶导了N遍,偶还是记不住。俗话说“好记性不如烂笔头”,于是乎,偶决定记下来,便于自己日后查看,同时也可以给同样小白的同胞们一点参考。说的可能有点啰嗦,但是真的很详细,自己一步步来写的。第一步,打开eclipse,选择一个新的workspace,点击“OK”,进入eclipse界面。第二步,新建Java项目:点击file下面的“new”图标,选择“Java…

    2022年7月8日
    27
  • C++创建线程池_windows线程池iocp

    C++创建线程池_windows线程池iocp1、线程池基类负责创建线程和释放线程,ThreadPoolBase类示例代码如下:#pragmaonce#include”stdafx.h”#include<thread>#include<vector>usingnamespacestd;classCThreadPoolBase{public: CThreadPoolBase(); ~CThreadPoolBase(); virtualboolStartThread(intnTh.

    2022年10月1日
    1
  • 完美者常用软件光盘2008

    完美者常用软件光盘2008下载地址:http://down.wmzhe.com/html/view-9663.htm1.JPG(45.22KB)2007-12-2719:102.JPG(49.8KB)2007-12-2719:103.JPG(44.11KB)2007-12-2719:1044.JPG(55.81KB)2007-1

    2022年7月26日
    3
  • SVN版本库修改URL路径或者IP地址

    SVN版本库修改URL路径或者IP地址

    2021年9月21日
    75
  • 和黑客斗争的 6 天![通俗易懂]

    和黑客斗争的 6 天![通俗易懂]互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找Sql注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都…

    2022年6月11日
    31

发表回复

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

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