scala case class与class区别
来源:互联网 发布:医药市场数据分析实例 编辑:程序博客网 时间:2024/05/31 18:54
在Scala中存在case class,它其实就是一个普通的class。但是它又和普通的class略有区别,如下:
1、初始化的时候可以不用new,当然你也可以加上,普通类一定需要加new;
scala> case class Iteblog(name:String)
defined class Iteblog
scala> val iteblog = Iteblog(“iteblog_hadoop”)
iteblog: Iteblog = Iteblog(iteblog_hadoop)
scala> val iteblog = new Iteblog(“iteblog_hadoop”)
iteblog: Iteblog = Iteblog(iteblog_hadoop)
2、toString的实现更漂亮;
scala> iteblog
res5: Iteblog = Iteblog(iteblog_hadoop)
3、默认实现了equals 和hashCode;
scala> val iteblog2 = Iteblog(“iteblog_hadoop”)
iteblog2: Iteblog = Iteblog(iteblog_hadoop)
scala> iteblog == iteblog2
res6: Boolean = true
scala> iteblog.hashCode
res7: Int = 57880342
4、默认是可以序列化的,也就是实现了Serializable ;
scala> class A
defined class A
scala> import java.io._
import java.io._
scala> val bos = new ByteArrayOutputStream
bos: java.io.ByteArrayOutputStream =
scala> val oos = new ObjectOutputStream(bos)
oos: java.io.ObjectOutputStream = java.io.ObjectOutputStream@4c257aef
scala> oos.writeObject(iteblog)
scala> val a = new A
a: A =
scala> oos.writeObject(a)
java.io.NotSerializableException:
5、自动从scala.Product中继承一些函数;
6、case class构造函数的参数是public级别的,我们可以直接访问;
scala> iteblog.name
res11: String = iteblog_hadoop
7、支持模式匹配;
其实感觉case class最重要的特性应该就是支持模式匹配。这也是我们定义case class的唯一理由,难怪Scala官方也说:It makes only sense to define case classes if pattern matching is used to decompose data structures. 。来看下面的例子:
object TermTest extends scala.App {
def printTerm(term: Term) {
term match {
case Var(n) =>
print(n)
case Fun(x, b) =>
print(“^” + x + “.”)
printTerm(b)
case App(f, v) =>
print(“(“)
printTerm(f)
print(” “)
printTerm(v)
print(“)”)
}
}
def isIdentityFun(term: Term): Boolean = term match {
case Fun(x, Var(y)) if x == y => true
case _ => false
}
val id = Fun(“x”, Var(“x”))
val t = Fun(“x”, Fun(“y”, App(Var(“x”), Var(“y”))))
printTerm(t)
println
println(isIdentityFun(id))
println(isIdentityFun(t))
}
- Scala class与Case class的区别
- scala case class与class区别
- Scala class和case class的区别
- Scala class和case class的区别
- Scala class和case class的区别
- Scala class和case class的区别
- scala 模式匹配与case class
- Scala Case Class介绍
- Scala之Case Class
- scala的case class
- Scala学习笔记 --- case class 与 class 比较
- scala之case class 和case object
- Scala基础—模式匹配与case class示例
- scala:Object与Class的区别
- case class 和 class的区别
- Scala语法 Case Class和模式匹配
- Scala 语法 Case Class和模式匹配
- scala进阶22-case class消息传递
- spring boot 集成shiro
- FCIS ubuntu实现问题解决
- Java开发中的23种设计模式详解(转)
- 关于齐次坐标的理解(经典)
- 欢迎使用CSDN-markdown编辑器
- scala case class与class区别
- 如何部署 Calico 网络?- 每天5分钟玩转 Docker 容器技术(67)
- Android中Cursor类的概念和用法
- sql查询
- 我又把HTMLTestRunner改了一下,支持Python3,添加echarts统计饼图
- javascript打印时的css样式的控制
- [转]AutoEncoder原理
- python自然语言处理学习笔记2——基础语句
- BZOJ 3036 浅谈逆拓扑序递推期望转移方程