我有以下课程:
case class Person(
firstName: String = "",
lastName: String = "",
age: Int = 1,
ssnr: Int = 1
)
我想创建包含firstName
和/或lastName
的元组,只要它们的值不为空。
当然,我可以做到以下几点:
if (!person.firstName.isEmpty && !person.lastName.isEmpty)
("firstname" -> person.firstName, "lastName" -> person.lastName, "age" -> person.age, "ssnr" -> person.ssnr)
但这会使事情变得复杂,因为如果firstName
为空或lastName
为空,我必须检查几个案例并在这些特定前提条件下包含或排除它们(我也有比这两个更多的属性) )。
有没有比if / else条件更好的方法来解决这个问题?
答案 0 :(得分:0)
您应该重载构造函数。默认情况类(也许你可以去普通类)构造函数没有默认值,而伴随对象中定义的构造函数可能只有一个默认值或两者都有。
另一个更惯用的选项是将这些字段设置为Option[String]
,以便调用者在想要省略该值时可以指定None。
我相信第二个是更好的选择(啊!)但你应该知道如何处理它:Option
是一种语义上更强大的数据建模方法,它带来了很多含义,而第一个类似java的选项只是一组预定义的方法,你可以使用。