Scala class和case class的区别
在Scala中存在case class,它其实就是一个普通的class。但是它又和普通的class略有区别,如下:
1、初始化的时候可以不用new,当然你也可以加上,普通类一定需要加new;
scala> case class Iteblog(name:String)defined class Iteblogscala> val iteblog = Iteblog("iteblog_hadoop")iteblog: Iteblog = Iteblog(iteblog_hadoop)scala> val iteblog = new Iteblog("iteblog_hadoop")iteblog: Iteblog = Iteblog(iteblog_hadoop)scala> iteblogres5: Iteblog = Iteblog(iteblog_hadoop)scala> val iteblog2 = Iteblog("iteblog_hadoop")iteblog2: Iteblog = Iteblog(iteblog_hadoop)scala> iteblog == iteblog2res6: Boolean = truescala> iteblog.hashCoderes7: Int = 57880342scala> class Adefined class Ascala> import java.io._import java.io._scala> val bos = new ByteArrayOutputStreambos: java.io.ByteArrayOutputStream =scala> val oos = new ObjectOutputStream(bos)oos: java.io.ObjectOutputStream = java.io.ObjectOutputStream@4c257aefscala> oos.writeObject(iteblog)scala> val a = new Aa: A = $iwC$$iwC$A@71687b10scala> oos.writeObject(a)java.io.NotSerializableException: $iwC$$iwC$A6、case class构造函数的参数是public级别的,我们可以直接访问;
scala> iteblog.nameres11: String = iteblog_hadoopobject 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
case class: 1.定义为case class 的类在实例化时,可以不使用new 关键字. case class People(name:String, age:Int) val zhangs ...
- scala之method和function的区别
在我没有学习scala的时候,主要用java和python做日常工作开发,印象中,没有特别的刻意的去区分method和function的区别,这个关系,正如我们日常生活中,没有刻意的去区分质量和重量. ...
- oracle中DECODE与CASE的用法区别
对于CASE与DECODE其实并没有太多的区别,他们都是用来实现逻辑判断.Oracle的DECODE函数功能很强,灵活运用的话可以避免多次扫描,从而提高查询的性能.而CASE是9i以后提供的语法,这个 ...
- if语句,if...else if语句和switch...case语句的区别和分析
前段时间在工作中遇到了一个关于条件判断语句的问题,在if语句,if else if语句和switch case语句这三者之间分析,使用其中最有效率的一种方法. 所以就将这个问题作为自己第一篇博客的主要 ...
- Scala中==,eq与equals的区别
根据官方API的定义: final def ==(arg0: Any): Boolean The expression x == that is equivalent to if (x eq null ...
- Scala 中object和class的区别
Scala中没有静态类型,但是有有“伴侣对象”,起到类似的作用. Scala中类对象中不可有静态变量和静态方法,但是提供了“伴侣对象”的功能:在和类的同一个文件中定义同名的Object对象:(须在同一 ...
- Scala中class和object的区别
1.class scala的类和C#中的类有点不一样,诸如: 声明一个未用priavate修饰的字段 var age,scala编译器会字段帮我们生产一个私有字段和2个公有方法get和set ,这和C ...
- Scala中 object 和 class的区别
object 在scala中没有静态方法和静态字段,所以在scala中可以用object来实现这些功能,直接用对象名调用的方法都是采用这种实现方式,例如Array.toString.对象的构造器在第一 ...
- Scala中 => Unit 与 () =>Unit的区别
() => Unit ---> 是一个函数:=> Unit --> 是一个执行结果为Unit的表达式 code: => Unit是 by name 传递参数.参数是一个返 ...
随机推荐
- lnmp 环境下 部署 laravel 项目
出现错误 Warning: require(): open_basedir restriction in effect. File(/xxxx/vendor/autoload.php) is not ...
- 《Google工作法》读书笔记
最近一段时间,拜读了<Google工作法>,工作效率提升10倍的57个技巧. 作者是彼得·费利克斯·格日瓦奇,波兰人. 其中印象最深刻的部分如下: (1)不要被邮件夺走时间 不用邮件,所有 ...
- spring实战第五版总结
- Metinfo4.0 /member/save.php 任意用户密码修改
- CSRF-DVWA_1.9-笔记
CSRF : Cross-site request forgery 跨站请求伪造 所用到的工具: Firefox浏览器及其插件 HackBar(快速构造URL) 和 T ...
- springMvc中获取通过注解获取properties配置文件(转)
springMvc的项目中,通过注解@Value获取properties配置文件中的配置,使用该注解必须引入的包: spring-beans-4.1.4.RELEASE.jar 下面是需要在sprin ...
- Luogu P1650 田忌赛马
题目 如果我们最大比对面最大大,那么直接用. 如果我们最小比对面最小大,那么直接用. 否则用我们最小去换对面最大. #include<bits/stdc++.h> using namesp ...
- [LeetCode] 226. 用队列实现栈
题目链接: https://leetcode-cn.com/problems/implement-stack-using-queues 难度:简单 通过率:59.9% 题目描述: 使用队列实现栈的下列 ...
- 函数进阶装B操作
三元表达式 条件成立时的返回值 if 条件 else 条件不成立时的返回值 x = 10 y = 20 print(f"x if x > y else y: {x if x > ...
- Almost Increasing Array CodeForces - 946G (dp)
大意: 定义几乎递增序列为删除不超过一个数后序列严格递增. 给定序列, 求最少改变多少个数能变为几乎递增序列. 跟hdu5256类似,