scala 样例类
一.case class 的特征
package com.jason.qianfeng
case class Message(sender: String, receiver: String, body: String)
object CaseClassTest {
def main(args: Array[String]): Unit = {
println("==case class 的比较")
val mes = Message("jason", "wus", "starbuck")
val mes2 = Message("jason", "wus", "starbuck")
println(s"mes : ${mes.toString}")
println(s"mes2 : ${mes2.toString}")
println(s" mes == mes2 ? :${mes == mes2}")
println("==case class copy 方法")
val mes3 = mes.copy()
println(s"mes == mes3 ? : ${mes == mes3}")
println(s"==case class 部分copy")
val mes4 = mes.copy(sender = "fan")
println(s"mes: ${mes.toString}")
println(s"mes4: ${mes4.toString}")
}
}
运行结果如下:
==case class 的比较
mes : Message(jason,wus,starbuck)
mes2 : Message(jason,wus,starbuck)
mes == mes2 ? :true
==case class copy 方法
mes == mes3 ? : true
==case class 部分copy
mes: Message(jason,wus,starbuck)
mes4: Message(fan,wus,starbuck)
总结:
1.case class 默认实现了apply 方法,所以可以用val mes = Message("jason", "wus", "starbuck") 方法来创建对象
2.case class 重写了toString方法,
3.case class 主构造函数中的参数默认是 public val修饰的
4.case class 的比较是基于值的,并不是引用地址的比较
5.case class 的copy 可以实现部分copy,例如
val mes4 = mes.copy(sender = "fan")
mes4 的 sender 被赋值为“fan” ,其他值沿用mes的值
scala 样例类的更多相关文章
- 【Scala篇】--Scala中Trait、模式匹配、样例类、Actor模型
一.前述 Scala Trait(特征) 相当于 Java 的接口,实际上它比接口还功能强大. 模式匹配机制相当于java中的switch-case. 使用了case关键字的类定义就是样例类(case ...
- Scala模式匹配和样例类
Scala有一个十分强大的模式匹配机制,可以应用到很多场合:如switch语句.类型检查等.并且Scala还提供了样例类,对模式匹配进行了优化,可以快速进行匹配. 1.字符匹配 def mai ...
- Scala基础:模式匹配和样例类
模式匹配 package com.zy.scala import scala.util.Random /** * 模式匹配 */ object CaseDemo { def main(args: Ar ...
- Scala学习十四——模式匹配和样例类
一.本章要点 match表达式是更好的switch,不会有意外调入下一个分支 如果没有模式能够匹配,会抛出MatchError,可以用case _模式避免 模式可以包含一个随意定义的条件,称做守卫 你 ...
- 学好Spark/Kafka必须要掌握的Scala技术点(二)类、单例/伴生对象、继承和trait,模式匹配、样例类(case class)
3. 类.对象.继承和trait 3.1 类 3.1.1 类的定义 Scala中,可以在类中定义类.以在函数中定义函数.可以在类中定义object:可以在函数中定义类,类成员的缺省访问级别是:publ ...
- Scala集合库、模式匹配和样例类
package com.yz8 import org.junit.Test class test { @Test def test: Unit = { val ints = List(1,5,7,6, ...
- Scala-Unit6-final/type关键字、样例类&样例对象
一.关键字 1.final关键字 用final修饰的类:不能被继承 用final修饰的方法:不能被重写 注意:(1)在Scala中变量不需要用final修饰,因为val与var已经限制了变量是否可变 ...
- 大数据学习day16------第三阶段-----scala04--------1. 模式匹配和样例类 2 Akka通信框架
1. 模式匹配和样例类 Scala有一个十分强大的模式匹配机制,可以应用到很多场合:如switch语句.类型检查等.并且Scala还提供了样例类,对模式匹配进行了优化,可以快速进行匹配 1.1 模式匹 ...
- Scala--模式匹配和样例类
模式匹配应用场景:switch语句,类型查询,析构,样例类 一.更好的switch val ch :Char = '+' val sign = ch match{ case '+' => 1 c ...
随机推荐
- vector rIterator
#include<vector> #include<iostream> using namespace std; void main() { vector<int> ...
- STL str replace
#include <iostream> #include <string> using namespace std; void main() { string s=" ...
- 下载文件的Restful接口的前端实现
背景介绍 后端是springboot框架,接口是restful风格接口,需求是异步实现一个文件下载,该文件是动态生成的,以流的方式返回给前端.存在的问题是,ajax不支持post方式传参数,并触发浏览 ...
- 封装好的cookie的三个常用函数 cookie的添加、删除、提取操作函数
function addCookie(name,value,expiresHours){ //添加一个cookie. 三个参数:cookie的名称.值.有效时间(为0时,关闭浏览器cookie消 ...
- swoolefy PHP的异步、并行、高性能网络通信引擎内置了Http/WebSocket服务器端/客户端
近半年来努力付出,项目终于要正式结项了,团队4人经历了很多困难,加班加点,最终完成了!剩下的时间将总结一下在该项目中用到知识和遇到问题.今天就从swoole说起!项目中实现异步大文件传输的功能,在服务 ...
- JMeter压测工具安装及使用总结
一.安装 进入apache官网https://www.apache.org/dist/jmeter/binaries下载Windows版本JMeter: 二.配置环境变量 下载之后解压,配置环境变量 ...
- GitHub 手把手教你如何把本地项目或代码提交到Github托管
GitHub 手把手教你如何把项目或代码提交到Github托管 启动Git Bash命令行 重点内容 1.首先打开你的github,点击新建项目,点击new repositories ,然后直接给项目 ...
- javascript优先级注意点
javascript 优先级 注意一下 && 和 == 号之间的优先级关系 请首先看如下代码, 判断下 && 和 == 的优先级 const emptyObj = {n ...
- java 备用待迁移
Java基础 2018年如何快速学Java 泛型就这么简单 注解就这么简单 Druid数据库连接池就是这么简单 Object对象你真理解了吗? JDK10都发布了,nio你了解多少? COW奶牛!Co ...
- ruby-on-rails-BUG
Ruby on Rails errors: (新手期) rails 自动化部署教程 Q1: rvm 无法使用 $ rvm use 1.9.3 --default RVM is not a functi ...