case class
1 构造器中的参数如果不被声明为var的话,它默认的话是val类型的,但一般不推荐将构造器中的参数声明为var
2 自动创建伴生对象,同时在里面给我们实现子apply方法,使得我们在使用的时候可以不直接显示地new对象
3 伴生对象中同样会帮我们实现unapply方法,从而可以将case class应用于模式匹配
1 | //抽象类Person |
sbt中的Attributed就是个case class
以下代码摘录自sbt/util仓库:
位置:internal/util-collection/src/main/scala/sbt/internal/util/Attributes.scala
1 | /** Associates a `metadata` map with `data`. */ |
关于Attributed类参数有两个括号的问题参考:
scala函数编程的柯里化
Scala 函数柯里化(Currying)
Scala class和case class的区别
Scala入门到精通
Scala单例对象、伴生类以及伴生对象、apply介绍