scala的隐式转换2

隐士类:implicit class == 隐式转换函数 + 类

第一步:定义一个有updateUser功能的类 PowerUser
第二步: 定义一个隐式转换函数,把BaseUser --->  PowerUser

代码如下:

package test1
//隐士类:implicit class == 隐式转换函数 + 类
object y1 {class BaseUser(){def insertUser(){println("insertUser")}}//第一步:定义一个有updateUser功能的类 PowerUser//第二步: 定义一个隐式转换函数,把BaseUser --->  PowerUserimplicit class PowerUser(u:BaseUser){def updateUser(){println("updateUser")}}//  implicit def transform(u:BaseUser):PowerUser ={
//    new PowerUser()
//
//  }//给这个类添加新的功能def main(args: Array[String]): Unit = {val u1 = new BaseUser()u1.insertUser()u1.updateUser()  //添加一个新的功能}}

 目标:给字符串添加新功能

implicit函数 + 普通类StrongString
代码如下:

package test1object y2 {//目标:给字符串添加新功能//implicit函数 + 普通类StrongStringimplicit class StrongString( str: String) {def isPhone: Boolean = {val reg = "1[3-9]\\d{9}".rreg.matches(str)}}//  implicit def stringtoStrongString(str:String):StrongString ={
//    new StrongString(str)
//  }def main(args: Array[String]): Unit = {val str:String= "1234899389"val rs = str.isPhoneprintln(s"$str 的结果是$str")}}

 考试原题:

package test1
import scala.language.postfixOps
//给所有的整数添加新功能
//1.判断是否偶数
//2.阶乘 5! = 5*4*3*2*1=120object y3 {implicit class xxx(d:Int){def isEven:Boolean = {d % 2 == 0}def ! :Int = {var rs = 1for(i <-1 to d) {rs *= i}rs}}def main(args: Array[String]): Unit = {println(10.isEven)println(9.isEven)println(5!)println(5.!)println(8!)}}


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/63737.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot【九】mybatis-plus之自定义sql零基础教学!

一、前言&#x1f525; 环境说明&#xff1a;Windows10 Idea2021.3.2 Jdk1.8 SpringBoot 2.3.1.RELEASE mybatis-plus的基本使用&#xff0c;前两期基本讲的差不多&#xff0c;够日常使用&#xff0c;但是有的小伙伴可能就会抱怨了&#xff0c;若是遇到业务逻辑比较复杂的sq…

Android后端签到flask迁移到rust的axum的过程-签到性能和便携

本次变更了以下内容: 为了使用之前ip2sta的ip到端点名的python,dic变量,将其存入redis hashset.使用地址/api/ip2dic 手动执行之.并且定义在/station/init,这个每天初始化redis的路径下.在rust axum使用redis 连接池在test中 ip2dic,IP转端点名,转本日此端网址.在前端的人名下…

ThinkPHP知识库文档系统源码

知识库文档系统 一款基于ThinkPHP开发的知识库文档系统&#xff0c;可用于企业工作流程的文档管理&#xff0c;结构化记录沉淀高价值信息&#xff0c;形成完整的知识体系&#xff0c;能够轻松提升知识的流转和传播效率&#xff0c;更好地成就组织和个人。为部门、团队或项目搭…

交换排序(Swap Sort)详解

交换排序Swap Sort详解 冒泡排序冒泡算法代码实现冒泡分析 快速排序快排算法代码实现快排分析 交换类排序主要是通过两两比较待排元素的关键字&#xff0c;若发现与排序要求相逆&#xff0c;则交换之。在这类排序方法中最常见的是起泡排序&#xff08;冒泡排序&#xff09;和快…

091 脉冲波形的变换与产生

00 如何获得脉冲波形 01 单稳态触发器 1.分类 2.工作特点&#xff1a; ① 电路在没有触发信号作用时处于一种稳定状态。 ② 在外来触发信号作用下&#xff0c;电路由稳态翻转到暂稳态; ③ 由于电路中RC延时环节的作用&#xff0c;暂稳态不能长保持, 经过一段时间后&#xff0c…

全新的命令行自动化测试框架/运用于云原生/中间件/云计算/混沌测试等场景

CmdLinker CmdLinker将为您提供简单、可操作的命令对象的调用方式&#xff0c;通过链式调用去使用各种命令&#xff0c;获取请求/响应&#xff0c;不在局限于将简单的命令字符串交给各种ssh工具包&#xff0c;修改执行命令时&#xff0c;不在需要进行各种繁琐的字符串的替换之…

高级排序算法(二):归并排序与堆排序详解

引言 在上一章中&#xff0c;我们探讨了高效的快速排序及其分治思想。这一次&#xff0c;我们将继续探索两种同样重要的排序算法&#xff1a;归并排序&#xff08;Merge Sort&#xff09; 和 堆排序&#xff08;Heap Sort&#xff09;。 它们与快速排序一样&#xff0c;都是O(…

JVM调优之如何排查CPU长时间100%的问题

对于CPU长时间100%的问题&#xff0c;其实有一个比较标准的排查流程&#xff0c;现在模拟一个垃圾回收导致的cup占用率过高的排查方法。 步骤如下&#xff1a; 1.先通过top命令找到消耗cpu很高的进程id 在服务器上输入top&#xff0c;显示如下&#xff1a; 通过top命令定位到…

中间件--MongoDB部署及初始化js脚本(docker部署,docker-entrypoint-initdb.d,数据迁移,自动化部署)

一、概述 MongoDB是一种常见的Nosql数据库&#xff08;非关系型数据库&#xff09;&#xff0c;以文档&#xff08;Document&#xff09;的形式存储数据。是非关系型数据库中最像关系型数据库的一种。本篇主要介绍下部署和数据迁移。 在 MongoDB 官方镜像部署介绍中&#xff…

【mysql】数据库存量数据双主实现

数据库存量数据双主实现 概述 在现代数据库管理中&#xff0c;主从复制是一种常见的数据同步技术&#xff0c;用于实现数据的高可用性和灾难恢复。本文将详细介绍如何配置MySQL的双主(仅对一个库进行写入&#xff09;&#xff0c;并展示一个实际的迁移过程。 步骤1&#xff…

enable_shared_from_this

用途 struct S {shared_ptr<S> dangerous(){return shared_ptr<S>(this); // dont do this!} };int main() {shared_ptr<S> sp1(new S);shared_ptr<S> sp2 sp1->dangerous();return 0; }考虑以上代码&#xff0c;从一个被shared_ptr管理的struc…

SkyWalking Helm Chart 4.7.0 安装、配置

https://skywalking.apache.org/events/release-apache-skywalking-kubernetes-helm-chart-4.7.0/https://github.com/apache/skywalking-helm/tree/v4.7.0https://skywalking.apache.org/zh/2020-04-19-skywalking-quick-start/简介 skywalking 是分布式系统的 APM(Applicat…

HTA8998 实时音频跟踪的高效内置升压2x10W免电感立体声ABID类音频功放

1、特征 输出功率(fIN1kHz,RL4Ω&#xff0c;BTL) VBAT 4V, 2x10.6W(VOUT9V,THDN10%) VBAT 4V, 2x8.6W (VOUT9V,THDN1%) 内置升压电路模式可选择:自适应实时音频跟踪 升压(可提升播放时间50%以上)、强制升压 最大升压值可选择&#xff0c;升压限流值可设置 ACF防破音功能 D类…

时间敏感网络与工业通信的融合:光路科技电力专用交换机和TSN工业交换机亮相EP电力展

12月7日&#xff0c;第三十一届中国国际电力设备及技术展览会&#xff08;EP Shanghai 2024&#xff09;暨上海国际储能技术应用展览会在上海新国际博览中心圆满落幕。本届展会以“数字能源赋能新质生产力”为主题&#xff0c;系统地呈现了电力设备行业在技术融合、转型升级及上…

Scala的单例对象

在Scala中&#xff0c;单例对象是一种特殊的类&#xff0c;它只能有一个实例&#xff0c;并且这个实例在需要时会自动创建。单例对象在Scala中通过object关键字来定义&#xff0c;它类似于Java中的静态成员和方法&#xff0c;但更加灵活和强大。 定义单例对象 以下是定义一个…

16、嵌套路由、query参数、params参数

嵌套路由 子路由,配置路由规则&#xff0c;使用children配置项&#xff1a; index.ts import {createRouter,createWebHashHistory, createWebHistory} from vue-routerimport Home from /pages/Home.vue import News from /pages/News.vue import Yule from /pages/Yule.vu…

前端请求后端接口报错(blockedmixed-content),以及解决办法

报错原因&#xff1a;被浏览器拦截了&#xff0c;因为接口地址不是https的。 什么是混合内容&#xff08;Mixed Content&#xff09; 混合内容是指在同一页面中同时包含安全&#xff08;HTTPS&#xff09;和非安全&#xff08;HTTP&#xff09;资源的情况。当浏览器试图加载非…

【Golang】Go语言编程思想(六):Channel,第四节,Select

使用 Select 如果此时我们有多个 channel&#xff0c;我们想从多个 channel 接收数据&#xff0c;谁来的快先输出谁&#xff0c;此时应该怎么做呢&#xff1f;答案是使用 select&#xff1a; package mainimport "fmt"func main() {var c1, c2 chan int // c1 and …

SpringBoot【八】mybatis-plus条件构造器使用手册!

一、前言&#x1f525; 环境说明&#xff1a;Windows10 Idea2021.3.2 Jdk1.8 SpringBoot 2.3.1.RELEASE 经过上一期的mybatis-plus 入门教学&#xff0c;想必大家对它不是非常陌生了吧&#xff0c;这期呢&#xff0c;我主要是围绕以下几点展开&#xff0c;重点给大家介绍 里…

算法-字符串-32.最长有效括号

一、题目 二、思路解析 1.思路&#xff1a; 滑动窗口&#xff01;&#xff01;&#xff01; 2.常用方法&#xff1a; 无 3.核心逻辑&#xff1a; 1.特殊情况&#xff1a;当字符串为空或不存在 if(snull||s.length()0)return 0; 2.一般情况 a.记录最长有效括符res&#xff1b;初…