如何根据Scala中的条件创建元组

时间:2016-10-08 19:21:20

标签: scala

我有以下课程:

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条件更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:0)

您应该重载构造函数。默认情况类(也许你可以去普通类)构造函数没有默认值,而伴随对象中定义的构造函数可能只有一个默认值或两者都有。

另一个更惯用的选项是将这些字段设置为Option[String],以便调用者在想要省略该值时可以指定None。

我相信第二个是更好的选择(啊!)但你应该知道如何处理它:Option是一种语义上更强大的数据建模方法,它带来了很多含义,而第一个类似java的选项只是一组预定义的方法,你可以使用。

构建你的类