代码片段被轻视,抽样。
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
可以提供无形的帮助吗?
答案 0 :(得分:7)
最简单的方法是为phoneNumber
提供默认值:
case class Person(firstName: String, lastName: String, phoneNumber: String = "")
或者,您可以创建一个伴随对象,并为这两种情况实施apply()
方法,即使用和不使用phoneNumber
。如果您决定采用这种方法,并且在模式匹配中使用案例类,则可能还需要实现相应的unapply()
方法。