案例类修改和设计通用方法

时间:2014-06-26 03:20:59

标签: scala shapeless

为了这篇文章的目的,

代码片段被轻视,抽样。

case class Person(firstName:String,lstName:String)

此人类已在代码库中的所有位置使用。现在,后来的要求发生了变化,并决定在个人案例类

中添加phoneNumber

e.g。

case class Person(firstName:String,lstName:String,phoneNumber:String)

再次,帖子中的例子极为简化。实际上,有更多有趣的事情正在发生。请注意,phoneNumber不是Option,而是必填字段。通常,人们会使用Person类更新所有代码,以迎合新字段lastName。当你有100个引用它时,这是相当繁琐的。

从get go vs case class创建更灵活的HList可以提供无形的帮助吗?

1 个答案:

答案 0 :(得分:7)

最简单的方法是为phoneNumber提供默认值:

case class Person(firstName: String, lastName: String, phoneNumber: String = "")

或者,您可以创建一个伴随对象,并为这两种情况实施apply()方法,即使用和不使用phoneNumber。如果您决定采用这种方法,并且在模式匹配中使用案例类,则可能还需要实现相应的unapply()方法。