case class,样例类,有人也叫条件类。

例如:

case class Person(name:String, age:Int)

好用之处:

1.新建类实例不用new Person(..),直接用Person("qh",20)

2.自动定义好getXX方法,Person("qh",20).name // "qh"

3.提供默认的toString(), Person("qh",20) // "Person(qh,20)"

4.用case class代替tuple

val p = ("qh",20) // p._1 = "qh", p._2 = 20;好处是简洁,但无意义

case class person(name:String, age:Int)

val p = person("qh",20) // p.name = "qh", p.age = 20; 好处是有名字,自说明,可读性强

5.经过优化用于模式匹配

def main(args: Array[String]): Unit = {
val alice = Person("Alice", 25)
val bob = Person("Bob", 32)
val charlie = Person("Charlie", 32) for (person <- List(alice, bob, charlie)) {
person match {
case Person("Alice", 25) => println("Hi Alice!")
case Person("Bob", 32) => println("Hi Bob!")
case Person(name, age) =>
println("Age: " + age + " year, name: " + name + "?")
}
}
}

输出结果为:

Hi Alice!
Hi Bob!
Age: 32 year, name: Charlie?

 总结:

在定义一些大家约定的规范时,最好用case class,比如spark rdd转化为dataframe时,一个常用的办法就是通过case class

最新文章

  1. android中导入低版本project可能会遇到的编译问题(转自: Victor@Beijing)
  2. bootstrap表格内容跑到表格外面的处理办法
  3. [游戏模版8] Win32 透明贴图
  4. MySQL日期数据类型、MySQL时间类型使用总结
  5. c How to Make an Ascii Picture.
  6. Socket(2)
  7. sql语句查询经纬度范围
  8. CDocument类的UpdateAllViews()成员函数
  9. Number Sequence(KMP,判断子串 模板)
  10. 130. Surrounded Regions
  11. Springmvc中@RequestParam传值中文乱码解决方案(转)
  12. windows屏幕保护程序opengl模板
  13. 配置文件http://www.cnblogs.com/Jevon-ran/p/7112007.html
  14. [国嵌攻略][164][USB驱动程序设计]
  15. linux各种顔色代表
  16. LeetCode之Easy篇 ——(1)Two Sum
  17. Git 常用命令备份
  18. 微信小程序echart 折线图legend不显示的问题
  19. Android知识点textview加横线的属性
  20. bzoj千题计划227:bzoj1486: [HNOI2009]最小圈

热门文章

  1. 理解Javascript__undefined和null
  2. PC110304/UVA850
  3. php中遇到include_path=&#39;.;C:\php5\pear&#39;的错误
  4. Sharepoint 问题集锦 - 配置
  5. 利用java实现一个简单的远程监控程序
  6. 当xcode里点运行出现treating unicode character as whites
  7. 运行从别处复制过来的linux可执行程序
  8. 【转载】利用jetty+Eclipse实现超轻量级web开发
  9. Codeforces Round #205 (Div. 2) : A
  10. 安卓天天练练(十五)改造BasicSyncAdapter