初学scala2——case class
2024-09-21 02:46:48
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
最新文章
- android中导入低版本project可能会遇到的编译问题(转自: Victor@Beijing)
- bootstrap表格内容跑到表格外面的处理办法
- [游戏模版8] Win32 透明贴图
- MySQL日期数据类型、MySQL时间类型使用总结
- c How to Make an Ascii Picture.
- Socket(2)
- sql语句查询经纬度范围
- CDocument类的UpdateAllViews()成员函数
- Number Sequence(KMP,判断子串 模板)
- 130. Surrounded Regions
- Springmvc中@RequestParam传值中文乱码解决方案(转)
- windows屏幕保护程序opengl模板
- 配置文件http://www.cnblogs.com/Jevon-ran/p/7112007.html
- [国嵌攻略][164][USB驱动程序设计]
- linux各种顔色代表
- LeetCode之Easy篇 ——(1)Two Sum
- Git 常用命令备份
- 微信小程序echart 折线图legend不显示的问题
- Android知识点textview加横线的属性
- bzoj千题计划227:bzoj1486: [HNOI2009]最小圈
热门文章
- 理解Javascript__undefined和null
- PC110304/UVA850
- php中遇到include_path=&#39;.;C:\php5\pear&#39;的错误
- Sharepoint 问题集锦 - 配置
- 利用java实现一个简单的远程监控程序
- 当xcode里点运行出现treating unicode character as whites
- 运行从别处复制过来的linux可执行程序
- 【转载】利用jetty+Eclipse实现超轻量级web开发
- Codeforces Round #205 (Div. 2) : A
- 安卓天天练练(十五)改造BasicSyncAdapter