scala 学习笔记--对象

esp32s3 spi camera gc6133调试 gc6133 spi只有master模式,同时需要esp32提供主时钟,需要有主时钟然后才能通过i2c进行初始化.测试了几种方式,记录如下。 阅读详情

一、对象
1.伴生对象:与类同名的对象,类和它的伴生对象可以相互访问私有特性,但是它们必须存在于同一个源文件中。
2.对象的apply方法:经常被用在伴生对象中,可以不用构造器,省去new关键字,方便很多。注意Array(100)与new Array(100)的区别:

Array(100)  //调用的是apply(100),输出一个只含有一个元素(100)的Array
new Array(100) //调用构造器this(100),生成一个含有100个null元素的Array

3.对象的update方法:

val scores = new scala.collection.mutable.HashMap[String,Int]
scores("Bob") = 100 //调用scores.update("Bob",100)
val bobscores = scores("Bob") //调用scores.apply("Bob")

4.提取器:所谓提取器就是一个带有unapply方法的对象,可以把unapply方法看成伴生对象中apply方法的方向操作。apply方法接收参数然后把他们变成对象,unapply方法接收对象然后把值赋给参数。

class Fraction(n:Int,m:Int){
  ...
}
object Fraction(){ 
  def apply(n:Int,m:Int) = new Fraction(n,m)
  // 伴生对象的apply方法
  def unapply(input:Fraction)=
  if(input.den == 0) None else Some((input.num,input.den))
  // 伴生对象的unapply方法
}

上面定义了一个Fraction类,apply方法根据分子和分母创建一个分数,unapply则根据一个分数提取出分子和分母。

var Fraction(a,b) = Fraction(3,4)*Fraction(2,5)
// a和b分别被初始化成运算结果的分子和分母

或者用于模式匹配:

case Fraction(a,b) => ... 
// a和b分别被绑到分子和分母

要提取任意长度的值得序列,我们应该用unapplySeq来命名我们的方法,它返回一个Option[Seq[A]],其中A是被提取值得类型。

CMake入门教程【基础篇】在Windows、Linux上安装CMake CMake如何下载与安装 阅读详情

相关推荐

【SOC 芯片设计 DFT 学习专栏 -- DFT DRC规则检查】

在现代半导体设计中,DFT(Design for Test)技术的重要性不言而喻。它确保了芯片在制造完成后能够进行高效和可靠的测试。DFT设计规则检查(DRC)作为DFT流程中的一个关键环节,通过一系列自动化工具检测设计中的潜在问题,从而保证设计的可测试性和整体质量。在本文中,我们将详细探讨DFT DRC的概念、重要性、检查流程以及具体的规则和应用。Tessent是业界领先的DFT解决方案之一,其DRC工具通过一系列自动化检查,确保设计符合DFT要求。

CodingCos的博客 4167

scala:Array(100) 和 new Array(100)的区别

Array(100)调用的是apply(100),输出的 只有一个元素,它的值为整数100 new Array(100)调用的是构造器this(100),输出的是100个元素,元素值都为null

gongxuan92的专栏 1734

Android 13 GMS认证避坑:手把手教你搞定RKP配置,解决GTS测试fail

本文详细解析Android 13 GMS认证中的RKP(远程密钥配置)全流程,提供GTS测试失败的深度解决方案。从RKP核心概念到实战配置技巧,帮助开发者规避常见陷阱,确保设备顺利通过Google安全认证,特别适合需要快速掌握Android13 GMS认证的工程师参考。

weixin_29796279的博客 464

Scala 对象

摘自《快学Scala》第六章0.重点需要某个类的单个实例时,或者想为其他值或函数找一个可以挂靠的地方时,就会用到object。 * 用对象作为单例或存放工具方法 * 类可以拥有一个同名的伴生对象 * 对象可以扩展类或特质 * 对象的apply方法通常用来构造伴生类的新实例 * 如果不想显式定义main方法,可以用扩展App特质的对象 * 可以通过扩展Enumeration对象来实现枚举1

power0405hf的专栏 725

大疆无人机地理视频制作全流程:从SRT文件到GIS叠加(附实战避坑指南)

本文详细解析了大疆无人机地理视频制作全流程,从解析SRT文件中的位姿数据,到在GIS软件中构建地理视频工程并生成可分发的文件。文章重点介绍了地理视频的核心概念、数据处理实战技巧,并探讨了其在应急响应、工程巡检等场景的高级应用与精度边界,为GIS工程师和无人机爱好者提供了一份实用的避坑指南。

river的博客 463

Excel VBA--按某一列拆分数据到多个文件

首先,将需要拆分的sheet命名为“明细”,接下来运行此代码,按提示操作即可。 在这里插入代码片 Sub chaifen() '定义变量类型 Dim sht, sh1, sh2 As Worksheet Dim k, i, j As Integer Dim irow As Integer Dim col As Integer Dim str As String '程序开始是要求输入按哪一列拆分数...

weixin_43650026的博客 5873

JS快速建立一个数组,长度100,值是下标或者0

1.Object.keys和Array.apply和map var arr = Object.keys(Array.apply(null, { length: 100 })).map(function( item ) { return +item; }); 2.Object.keys和Array.from和map var arr = Object.keys(Array.from({...

qq_36711388的博客 4760

29、5G PUCCH格式及资源配置详解

本文详细解析了5G通信系统中的物理上行控制信道(PUCCH)的不同格式及其资源配置方案。PUCCH负责传输上行控制信息(UCI),包括混合自动重传请求(HARQ)确认信息、调度请求(SR)和信道状态信息(CSI)等。文章从PUCCH的基本概念出发,深入分析了格式0到格式4的特点、编码调制方式、干扰随机化机制以及适用场景,并探讨了PUCCH资源集的配置方法和上行控制信令在PUSCH上的传输机制。通过对比不同格式的传输能力、干扰随机化方式和频率跳变能力,为读者提供了选择合适PUCCH格式的决策依据。最后,文章总

oil88的博客 251

scala21:apply方法和unapply方法

作用 通过伴生对象提供的Apply方法创建对象,不需要使用new关键字 例如 var list = List(1,2,3) 使用的就是伴生对象的apply方法 通过伴生对象apply方法创建对象 class User(var name:String,var age:Int) { } object User { def apply(name: String,age: Int): User = ...

qq_34352013的博客 217

boost::circular_buffer缓行缓冲区

1、circular_buffer实现了一个环形缓冲区,空间大小是固定的,当到达容器末尾时,将自动利用容器另一端的位置空间。 2、当程序需要容纳大量的元素,但多数情况下仅保存较少数量元素时可以使用circular_buffer_space_optimized,他可以有效的减少内存的占用,提高程序的运行效率。 3、主要接口: 4、实现一个生产者---消费者模式示例: #inc...

小米的修行之路 791

基于YOLOv5s的RK3588多线程部署16FPS暴涨到120FPS 轻量化深度学习部署实战教程(包括性能优化与加速)37

本文介绍了如何在RK3588平台上利用线程池优化YOLOv5模型的推理性能。RK3588内置3个NPU核心,支持多核并行处理。作者设计了一个线程池架构:1个线程负责数据读取,10个线程处理NPU运算,1个线程输出结果。该架构包含任务队列、线程管理和工作线程三个核心组件,通过合理设置线程数、任务队列大小等参数确保性能稳定。文章提供了详细的C++实现代码,包括线程池初始化、任务提交、结果获取等功能模块,并讨论了多线程同步和内存管理的关键技术要点。该方案可显著提升深度学习模型在嵌入式设备上的部署效率。

FJN110的博客 9225

scala学习笔记4(apply方法)

class ApplyTest{ def apply() = "This apply is in class" def test{ println("test") } } //放在 object 对象中的方法都是静态方法 //由于 object 中的方法和属性都是静态的,所以就是单例的理想载体 //object 本身就是一个单例对象 object ApplyTest{...

weixin_30659829的博客 181

音视频开发基础(1):模拟视频技术简介

模拟视频技术是指用模拟技术对动态影像进行捕捉、记来、处理、存储、传输、复现的技术.模拟视频技术的发明、发展与模拟电视系统的发展密不可分.下面将通过模拟电视系统来介绍模拟视频技术中的基本概念. 首先,人的视觉系统的特征为电视等視稿系铳的发明、发展提供了理论依据.光线通过角膜、腫孔、晶状体的折射光线.透过玻璃体到达视网展.视网膜上分布着光感受器,光感受器在光线的剌激下...

琅嬛福地 1492

Scala学习笔记之单例对象`Singleton Objects`

单例对象Singleton Objects 伴随对象 case类

李子峰的专栏 2210

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

scala中的函数、变量、集合、对象---scala学习笔记(1)

最近正在尝试接触spark,那么不可避免地就要用到scala,虽然spark同时也支持java,但是通过阅读spark上的例程上发现,往往scala的代码相比较java而言更加简短,而且也更加清晰。所以决定试一试简单地学习一下scala。 使用的书籍是《Scala编程》,篇幅不长但是力在突出Scala自身的特性而且对Java和scala做了比较。 1.变量的定义

miaote的博客 508

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

学习笔记——Scala对象、函数和方法(1)

作为开发Spark重要的代码之一Scala,是学习Spark之前必须要了解到的一门语言,相比之前接触过的java,scala更像是一个面向对象+面向函数的编程语言,其中的函数非常丰富,代码机制非常简单,配合起Spark的开发可谓是得心应手,相同的功能模块下,scala仅仅只需要用几行就能代替java所写的相同内容;或许你会问到为什么不用python,spark的API兼容性与python非常差,许...

Y_BigFFFFFF的博客 416

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Scala学习笔记7: 对象

在Scala中, 伴生对象 (Companion Object) 是一个与类同名的对象, 用于扩展类的功能并提供类级别的操作;通过这种方式, 你可以灵活地扩展类或特质的对象, 使其具有更多的功能和行为, 同时保持原始类或特质的不变性;通过伴生对象, 你可以在Scala中实现类级别的操作和共享的功能, 提供高代码的可维护性和灵活性;通过扩展类或特质的对象, 可以在不修改原始类或特质的情况下, 为其添加额外的功能或行为;在Scala中, 要扩展类或特质的对象, 可以使用匿名类或匿名特质的方式来实现;

Taerge0110的博客 1538

Scala学习笔记:Scala面向对象基础

Scala面向对象基础 1.面向对象的基本概念 2.面向对象的特征 3.如何定义一个类 4.内部类 5.类的构造器  6.单例对象(object) 单例模式 7.应用程序对象 8.apply方法 9.类的继承  10.抽象类 11.特质(Trait) 12.包的使用

lrxcmwy2的博客 544

scala学习笔记-对象

1. 单例对象  Scala没有静态方法或者静态字段,可以用object这个语法结构来达到同样目的。对象定义了某个类的单个实例,包含了你想要的特性: object Account{ private  var lastNumber =0  def newUniqueNumber() = { lastNumber+ =1;  lastNumber} } 当你在应用程序中需要一个新的唯一账号

蜗牛乔巴的博客 224

Scala学习笔记之面向对象

创建对象 val greetStrings = new Array[String](3) 如果类还实现了apply方法,那么可以简写 val greetStrings = Array[String](3) object 1.object声明时和类声明时一样 2.一个object可以继承一个类的实现,并可以覆盖方法 3.java中的所有接口在scala中都可以用做特

ssjssh的专栏 4063

Scala学习笔记之类和对象

Scala的类和Java类的定义有一些相似之处,也有一些差异。

zuolixiangfisher的博客 269

Scala学习笔记04【类和对象】

1、类,字段和方法类的定义及创建对象:class ChecksumAccumulator { ...//类定义里,可以放置字段和方法,这些被笼统地称为成员:member。 } 创建ChecksumAccumulator对象:new CheckSumAccumulator 又:class ChecksumAccumulator { var sum = 0 } val a

未来之歌 691

Scala学习笔记-伴生对象于孤立对象

Scala-伴生对象于孤立对象

zhangdong_zender 1216

scala学习笔记——类和对象

基础语法关于Scala程序,这是非常要注意以下几点。 区分大小写 - Scala是大小写敏感的,这意味着标识Hello 和 hello在Scala中会有不同的含义。 类名 - 对于所有的类名的第一个字母要大写。 如果需要使用几个单词来构成一个类的名称,每个单词的第一个字母要大写。 示例:class MyFirstScalaClass 方法名称 - 所有的方法名称的第一个...

diaorong5437的博客 151

scala学习笔记7 对象

待定,学习中

qq1977261418的博客 482

Scala学习笔记(6)对象

1.单例对象。Scala没有静态方法或字段,可以使用object这个语法结构来达到同样的目的。对象定义了单个实例,包含了你想要的特性。 object Accounts{ private var lastNumber = 0 def newUniqueNumber()={lastNumber+=1;lastNumber} } Scala没有静态的概念,如果...

aikunjiao3421的博客 114
上一篇: 不平衡数据分类方法总结
下一篇: Linux命令笔记
magicchu
博客等级 码龄15年 424粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值